Если вы хотите найти общую сумму дубликатов, может быть полезен приведенный ниже код:
let text = "HelloooE"
func numberOfDuplicates(_ s: String) -> Int { s.count - Set(s).count }
print(numberOfDuplicates(text)) //Answer: 3 >> which says one "l" and two "o"s are duplicated.
Но если требуется количество повторяющихся символов, это должен быть ответ:
let text = "HelloooE"
func countOfDuplicateChars(_ s: String) -> Int { s.reduce(into: [:]) {result, word in result[word, default: 0] += 1 }
.filter { $0.value > 1 }
.count }
print(countOfDuplicateChars(text)) //Answer: 2 >> which says "l" and "o" are duplicated characters.
Функция ниже также возвращает количество повторяющихся символов и не учитывает регистр:
let text = "HelloooE"
func countOfDuplicateChars_CS(_ s: String) -> Int { s.lowercased()
.reduce(into: [:]) {result, word in result[word, default: 0] += 1 }
.filter { $0.value > 1 }
.count }
print(countOfDuplicateChars(text)) //Answer: 3 >> which says "l", "o" and "e" are duplicated characters.