Комбо-стрик одной кнопки

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

Условие

В игре герой делает комбо, если несколько ходов подряд нажимать одну и ту же кнопку.

Дана запись нажатий за матч — строка из символов. Найдите длину самого длинного подряд идущего блока одинаковых символов.

Формат ввода

Одна строка s — запись нажатий.

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

Выведите одно целое число — максимальную длину подряд идущего блока одинаковых символов в строке.

Ограничения

Пример

Ввод:

AAABBA

Вывод:

3

Пояснение: самый длинный блок — AAA длины 3.

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

Приём: Линейный проход (две переменные: текущая серия и максимум)

Ключевое наблюдение: максимальный «комбо-стрик» — это максимум среди длин всех подряд идущих одинаковых символов. Эти длины можно получить за один проход, сравнивая каждый символ с предыдущим.

Почему работает: граница блока появляется ровно там, где s[i] != s[i-1]. Значит, можно вести счётчик текущей серии cur: увеличивать его, пока символы одинаковые, и сбрасывать в 1 при смене символа. Параллельно храним лучший ответ best.

План:

Мини-сниппет для обновления: best = max(best, cur).

Сложность: O(n) по времени и O(1) по памяти.

Частая ошибка: обновить максимум только при «разрыве» и забыть про последний блок — тогда ответы неверны, если самая длинная серия в конце строки.

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

Есть строка нажатий: AAABBA. Комбо-стрик — это подряд идущие одинаковые символы. Нужно найти длину самого длинного такого блока.

Идея: Идём по строке слева направо и считаем длину текущего подряд идущего блока одинаковых символов. Когда символ меняется, сравниваем текущую длину с лучшей (максимальной) и начинаем новый блок с длиной 1. В конце не забываем ещё раз сравнить последний блок с максимумом.

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

Куда дальше