Самая популярная буква на афишах

тема: Строки · уровень: базовый

Условие

В городе Линтоград развесили длинную строку афиш: на каждой афише — одна маленькая латинская буква. Мэр хочет узнать, какая буква встречается чаще всего, чтобы заказать её в типографии оптом.

Если таких букв несколько, мэр выбирает самую маленькую по алфавиту.

Формат ввода

Одна строка s длины от 1 до 2000. Строка состоит только из маленьких латинских букв az.

Формат вывода

Выведите два значения через пробел: 1) букву, которая встречается чаще всего (при равенстве — самую маленькую), 2) сколько раз она встречается.

Ограничения

Пример

Ввод:

abacaba

Вывод:

a 4

Как решать — идея подхода

Приём: Подсчёт частот (массив на 26 букв)

Ключевое наблюдение: алфавит маленький (всего 26 букв), поэтому можно просто посчитать частоту каждой буквы и затем найти лучшую.

Приём: частотный массив. Он работает, потому что букву легко переводить в индекс 0…25, а длина строки до 2000 — один проход достаточно.

План:

cnt[ord(ch) - ord('a')] += 1.

Сложность: O(|s| + 26), по памяти O(26) — фактически константа.

Частая ошибка: неправильно обработать равенство (например, обновлять ответ при >=). Это приведёт к выбору более поздней буквы, хотя нужна самая маленькая.

Разберись руками

Есть строка афиш: "abacaba". Нужно понять, какая буква встречается чаще всего. Если частота одинаковая, выбираем букву, которая раньше в алфавите.

Идея: Проверяешь, сколько раз встречается каждая буква в строке. Выбираешь ту, у которой частота самая большая. Если таких букв несколько, берёшь ту, которая раньше в алфавите, и выводишь её и её частоту.

Решить задачу с автопроверкой на Python →

Куда дальше