for ch in sПеребирает символы строки в порядке слева направо.
Для одного прохода храни только необходимое состояние: счётчик, текущую длину серии и лучший результат.
Для одного прохода храни только необходимое состояние: счётчик, текущую длину серии и лучший результат.
Линейная обработка строки хранит небольшое состояние: текущую серию, счётчик вхождений, позицию или лучший найденный результат.
count. Количество событий, удовлетворивших условию.
current. Длина серии, которая заканчивается на текущем символе.
best. Лучший результат среди всех уже обработанных позиций.
Окно. Фрагмент s[i:i+k] проверяет соседние символы или подстроку.
Запусти короткую программу и переходи по строкам. Визуализатор показывает только код, текущую строку, переменные и вывод.
count считает непересекающиеся вхождения подстроки, а перекрывающиеся пары надо считать проходом по индексам. find возвращает индекс первого вхождения или -1; index похож, но при отсутствии вызывает ValueError. Для серии обновляй best сразу после увеличения current, иначе последняя серия может потеряться.
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Удаляет перевод строки и пробелы по краям входа.