Alterna · учебный материал

Поиск и подсчёт символов

37.2: Поиск и подсчёт символов. Короткая теория, один пример и пошаговая трасса Python.

Что в этом материале

Содержание и основные понятия

Для одного прохода храни только необходимое состояние: счётчик, текущую длину серии и лучший результат.
суть и практика
8 класс
ЕГЭ №24
01
Как это устроено
Линейная обработка строки хранит небольшое состояние: текущую серию, счётчик вхождений, позицию или лучший найденный результат.
count.
Количество событий, удовлетворивших условию.
current.
Длина серии, которая заканчивается на текущем символе.
best.
Лучший результат среди всех уже обработанных позиций.
Окно.
Фрагмент s[i:i+k] проверяет соседние символы или подстроку.
02
Один пример в исполнении
Запусти короткую программу и переходи по строкам. Визуализатор показывает только код, текущую строку, переменные и вывод.
count
считает непересекающиеся вхождения подстроки, а перекрывающиеся пары надо считать проходом по индексам.
find
возвращает индекс первого вхождения или -1;
index
похож, но при отсутствии вызывает
ValueError
. Для серии обновляй
best
сразу после увеличения
current
, иначе последняя серия может потеряться.
Карта алгоритма
Читай слева направо, затем запускай код.
1
Начало
2
Взять следующий символ
3
Символ A?
4
Да: увеличить серию и best · Нет: сбросить
5
Вывести best
03
Запомнить
Различай перекрывающиеся и непересекающиеся вхождения.
Проверь пустую строку и строку из одного символа.
Обнови best после последнего символа, а не только при разрыве серии.
Синтаксис этой страницы
for ch in s
Перебирает символы строки в порядке слева направо.
range(len(s) - 1)
Даёт допустимые старты всех пар соседних символов.
s.count(part)
Считает непересекающиеся вхождения part.
s.find(part)
Возвращает индекс первого part либо -1.
s.rfind(part)
Возвращает индекс последнего part либо -1.
s.index(part)
Как find, но при отсутствии part вызывает ValueError.
max(a, b)
Выбирает больший результат; удобно обновлять рекорд серии.
strip
Удаляет перевод строки и пробелы по краям входа.

Структурная карта учебников