@Sir0zha

Как найти самый повторяемый символ в строке?

Прохожу курсы по свифт, задали ДЗ. В материале к дз даже намека на решение данной задачи нету, и куда смотреть что искать тоже не знаю. Подскажите как можно решить данную задачу. Через filter?
let frequents = "4878453556757364390942355"
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
Более наглядное решение, используется словарь, где ключём является символ строки, а значением - его количество

let frequents = "1[3333ddflsd111kfl1111sdkfls1111dfZ"

var D = [Character: Int]()

for elem in frequents
{
    if D.keys.contains(elem){
        D[elem] = D[elem]!+1;
    }
    else
    {
        D[elem] = 1
    }
}

var max = D.first
for elem in D{
    if elem.value > max!.value
    {
        max = elem
    }
}
print(max!)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
doublench21
@doublench21 Куратор тега Swift
5daf297d86524526184825.png

Текстом
"adflksdlfdfddddflsdkflsdkflsdfZ"
  .lazy
  .reduce(into: [Character:Int]()) { $0[$1] = $0[$1, default: 0] + 1 }
  .sorted { $0.value < $1.value }
  .last // (key: "d", value: 10)


З.Ы. Работает крайне быстро.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы