← Все вопросы

Задание 24 КЕГЭ: ищу самую длинную цепочку символов в строке из файла — как считать подряд идущие?

Задан 16 месяцев назад1.3к просмотров2 ответа
6

В задании 24 дают длинную строку в файле и просят, например, найти максимальную длину подряд идущих одинаковых символов или серию, удовлетворяющую условию. Я пытаюсь идти по строке, но сбиваюсь в подсчёте "подряд". Какой шаблон надёжный?

2 ответа

11
✓ Принятый ответ — помог автору

Классика задания 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, иначе перевод строки попадёт в подсчёт.

4

Если в 24 условие сложнее (например, "максимальная длина участка, где символы возрастают" или "подстрока вида AB, повторённая"), идея та же: один проход, счётчик текущего хорошего участка и его максимум. Меняется только условие в if. Не пытайся хранить все подстроки — память не нужна, достаточно двух переменных tek и max_len.

Ваш ответ

Войдите, чтобы ответить на вопрос.