Задание 24 КЕГЭ: ищу самую длинную цепочку символов в строке из файла — как считать подряд идущие?
В задании 24 дают длинную строку в файле и просят, например, найти максимальную длину подряд идущих одинаковых символов или серию, удовлетворяющую условию. Я пытаюсь идти по строке, но сбиваюсь в подсчёте "подряд". Какой шаблон надёжный?
2 ответа
Классика задания 24 — счётчик текущей серии и максимум. Шаблон:
with open('24.txt') as f:
s = f.readline().strip() # вся строка обычно в одной строке файла
tek = 1 # длина текущей серии
max_len = 1
for i in range(1, len(s)):
if s[i] == s[i-1]: # символ такой же, как предыдущий
tek += 1
if tek > max_len:
max_len = tek
else:
tek = 1 # серия оборвалась — начинаем заново
print(max_len)
Идея: идём со второго символа, сравниваем с предыдущим. Совпал — наращиваем текущую серию и обновляем максимум; не совпал — сбрасываем текущую в 1. Это и есть надёжный паттерн для "подряд идущих".
Важно: читай строку через readline().strip() (или read().strip()), чтобы убрать \n, иначе перевод строки попадёт в подсчёт.
Если в 24 условие сложнее (например, "максимальная длина участка, где символы возрастают" или "подстрока вида AB, повторённая"), идея та же: один проход, счётчик текущего хорошего участка и его максимум. Меняется только условие в if. Не пытайся хранить все подстроки — память не нужна, достаточно двух переменных tek и max_len.