Мини-урок · перед практикой

Самое частое слово

Подсчитываем частоты, затем выбираем по частоте и алфавиту.

Как к ней подойти

Потренируйтесь хранить пары «ключ - значение» и находить нужные записи в словаре.

Коротко о теме

Словарь связывает ключ со значением и позволяет быстро найти запись по ключу. Решите, что будет ключом, что значением и как обрабатывать отсутствующую запись. Для подсчётов удобно начинать с нуля.

Ключевая идея · Словарь частот

Ключ из отрицательной частоты и слова выбирает наибольшую частоту и лексикографически первое слово.

Проверьте перед запуском

  • Регистр и знаки пунктуации не удаляются: слово определяется разделителями ввода.

Сравните свой подход

Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.

Ваше принятое решение

Рекомендуемое решение: Словарь частот

Ключ из отрицательной частоты и слова выбирает наибольшую частоту и лексикографически первое слово.

counts = {}
for _ in range(int(input())):
    for word in input().split():
        counts[word] = counts.get(word, 0) + 1
print(min(counts, key=lambda word: (-counts[word], word)))

Время: O(W) в среднем без учёта длины слов. Память: O(U + L), U разных слов, L токенов строки.

Другой способ: Сортировка и группы

После сортировки равные слова соседствуют. При равной частоте сохраняем более раннее слово.

from itertools import groupby
words = []
for _ in range(int(input())):
    words.extend(input().split())
words.sort()
best, best_count = '', 0
for word, group in groupby(words):
    count = sum(1 for _ in group)
    if count > best_count:
        best, best_count = word, count
print(best)

Время: O(W log W) сравнений слов. Память: O(W) слов.