arrays swift

arrays - Cuente las ocurrencias que tiene un entero particular en una matriz



swift (2)

Esta pregunta ya tiene una respuesta aquí:

Cómo contar la cantidad de veces que ocurre un número en particular en una matriz. No puedo encontrar un método para esto de forma rápida. alguien me puede guiar por favor?

Gracias :)


Cree un diccionario, almacene el número la primera vez que lo encuentre e inicialice la clave con 1. Incremente de otro modo.

let numArray = [1, 2, 2, 2, 5] var numCount:[Int:Int] = [:] for item in numArray { numCount[item] = (numCount[item] ?? 0) + 1 for (key, value) in numCount { println("/(key) occurs /(value) time(s)") }


Xcode 9 o posterior • Swift 4 o posterior

En Swift 4 puede usar el nuevo método Dictionary reduce(into:) siguiente manera:

extension Sequence where Element: Hashable { var frequency: [Element: Int] { return reduce(into: [:]) { $0[$1, default: 0] += 1 } } func frequency(of element: Element) -> Int { return frequency[element] ?? 0 } }

Prueba en el patio de recreo:

let numbers = [0, 0, 1, 1, 1, 2, 3, 4, 5, 5] print(numbers.frequency) // [2: 1, 4: 1, 5: 2, 3: 1, 1: 3, 0: 2] print(numbers.frequency(of: 0)) // 2 print(numbers.frequency(of: 1)) // 3 print(numbers.frequency(of: 2)) // 1 print(numbers.frequency(of: 3)) // 1 print(numbers.frequency(of: 4)) // 1 print(numbers.frequency(of: 5)) // 2

Al extender la colección, también admite cadenas

"aab".frequency // ["a": 2, "b": 1]