Чтобы проверить наличие дубликатов в массиве в Swift, вы можете использовать различные методы. Вот несколько подходов с примерами кода:
Метод 1: использование набора
func hasDuplicates<T: Hashable>(array: [T]) -> Bool {
let uniqueElements = Set(array)
return uniqueElements.count != array.count
}
// Example usage
let array1 = [1, 2, 3, 4, 5]
print(hasDuplicates(array: array1)) // Output: false
let array2 = [1, 2, 3, 3, 4, 5]
print(hasDuplicates(array: array2)) // Output: true
Метод 2. Использование словаря
func hasDuplicates<T>(array: [T]) -> Bool where T: Hashable {
var dictionary = [T: Int]()
for element in array {
if let count = dictionary[element] {
return true
}
dictionary[element] = 1
}
return false
}
// Example usage
let array3 = ["apple", "banana", "orange"]
print(hasDuplicates(array: array3)) // Output: false
let array4 = ["apple", "banana", "orange", "banana"]
print(hasDuplicates(array: array4)) // Output: true
Метод 3. Использование метода contains
func hasDuplicates<T>(array: [T]) -> Bool where T: Equatable {
for (index, element) in array.enumerated() {
if array[index+1...].contains(element) {
return true
}
}
return false
}
// Example usage
let array5 = [1, 2, 3, 4, 5]
print(hasDuplicates(array: array5)) // Output: false
let array6 = [1, 2, 3, 3, 4, 5]
print(hasDuplicates(array: array6)) // Output: true
Метод 4. Использование класса NSCountedSet
из Foundation
import Foundation
func hasDuplicates<T>(array: [T]) -> Bool where T: Hashable {
let countedSet = NSCountedSet(array: array)
for element in countedSet {
if countedSet.count(for: element) > 1 {
return true
}
}
return false
}
// Example usage
let array7 = ["a", "b", "c"]
print(hasDuplicates(array: array7)) // Output: false
let array8 = ["a", "b", "c", "b"]
print(hasDuplicates(array: array8)) // Output: true