Подсчёт букв с таблицей частот
Подсчитывайте символы с помощью dict или массива
«Подсчёт букв с таблицей частот» — бесплатный урок Competitive Programming Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Competitive Programming Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Competitive Programming Academy содержит 4 уроков всего.
Зачем подсчитывать символы
Множество задач о строках сводится к одному вопросу: как часто встречается каждый символ? Таблица частот отвечает на него за один проход. 📊
Способ со словарём
Обычный словарь сопоставляет каждому символу его количество. Он работает с любым алфавитом, включая юникод и специальные символы.
freq = {}
for ch in 'apple':
freq[ch] = freq.get(ch, 0) + 1
print(freq)get() избегает KeyError
Вызов get(ch, 0) возвращает 0, если ключ отсутствует, поэтому при первой встрече буквы её счётчик корректно начинается с единицы.
Counter делает всё за Вас
Класс Counter из collections строит всю таблицу одной строкой. В задачах на скорость и ясность кода это один из самых популярных вариантов.
from collections import Counter
freq = Counter('apple')
print(freq['p']) # 2Для отсутствующих ключей возвращается ноль
Counter никогда не вызывает ошибку для отсутствующего ключа. Запрос для ещё не встречавшейся буквы просто возвращает 0, поэтому в коде не нужны дополнительные ветвления.
from collections import Counter
c = Counter('abc')
print(c['z']) # 0Способ с фиксированным массивом
Если используются только строчные буквы, список из 26 ячеек работает ещё быстрее. Индексируйте каждую букву с помощью арифметики ord и увеличивайте счётчик.
cnt = [0] * 26
for ch in 'apple':
cnt[ord(ch) - ord('a')] += 1Компромисс между массивом и словарём
Массив работает быстрее всего, но подходит только для известного небольшого алфавита. Словарь или Counter обрабатывает любые символы с небольшой дополнительной затратой.
Поиск самых частых символов
Counter предоставляет most_common(k): этот метод возвращает k самых частых символов, уже отсортированных по частоте. Сортировать вручную не нужно.
from collections import Counter
print(Counter('mississippi').most_common(1))Сравнение двух таблиц
Две строки являются анаграммами тогда и только тогда, когда их таблицы частот совпадают. Сравнение двух объектов Counter занимает одну строку.
from collections import Counter
print(Counter('listen') == Counter('silent')) # TrueДостаточно одного прохода
Построение таблицы занимает O(n) — это один просмотр строки. После этого каждый поиск выполняется за постоянное время.
Вычитание для поиска излишка
Объекты Counter поддерживают вычитание, поэтому можно определить, какие символы есть в одной строке, но отсутствуют в другой. Это полезно для задач о записке с выкупом.
from collections import Counter
print(Counter('aabb') - Counter('ab'))Быстрая проверка
Один вопрос о подсчёте символов.
Повторение
Теперь Вы умеете подсчитывать символы с помощью словаря, Counter или массива из 26 ячеек, а также использовать эти таблицы для проверки анаграмм и поиска часто встречающихся букв. 🎉
Часто задаваемые вопросы
Урок «Подсчёт букв с таблицей частот» бесплатный?
Да — полный текст урока «Подсчёт букв с таблицей частот» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Competitive Programming Academy, подпишись на CoddyKit PRO. Курс Competitive Programming Academy содержит 4 уроков всего.
Чему я научусь в уроке «Подсчёт букв с таблицей частот»?
Подсчитывайте символы с помощью dict или массива Ты практикуешь Competitive Programming Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Competitive Programming Academy?
Предыдущий опыт не требуется. Competitive Programming Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Подсчёт букв с таблицей частот»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Competitive Programming Academy?
Да. Каждый урок Competitive Programming Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Символы, ord и chr: полезные приёмы
- Подсчёт букв с таблицей частот
- Правильная проверка палиндромов
- Разделение, очистка и повторное объединение слов