EvgenKlimЭто ближе к нормальному, но тоже .count() будет проходить по тексту в миллион символов несколько раз.
видел также такое решение
EvgenKlimОн правильно делает, но долго. Так как он общий, там всё учитывается, даже то, что не надо.
я лично делал через Counter, но это еще дольше
Мы тут как-то сравнивали, получался он в 17 раз медленнее словаря.
EvgenKlim
Сортировка нужна, т.к. если например слово “bca”, то ответ = ‘a’, т.е. при равной частоте вывод по алфавиту
>>> import string >>> >>> def f(s): ... d = {} ... for c in s: ... if c in string.ascii_lowercase: ... d[c] = d.get(c, 0) + 1 ... m = max(d.values()) ... return sorted(k for k in d if d[k] == m)[0] ... >>> f('dcba dcba efgh') 'a' >>>