Задание 24 ЕГЭ по информатике 2027: обработка строки из файла

Задание 24 ЕГЭ по информатике — обработка длинной строки из текстового файла: нужно найти самую длинную цепочку символов с заданным свойством. Его решают короткой программой за один проход по строке: со счётчиком, скользящим окном или регулярным выражением.

Как решать

Файл задания 24 — одна длинная строка: в демоверсии 2027 года файл занимает около 10 МБ, это 10 миллионов символов. Прочитайте строку целиком: s = open('24.txt').readline().strip(). Перебор всех подстрок двумя вложенными циклами на такой длине не закончится за время экзамена, поэтому строку проходят один раз слева направо.

Если условие касается соседних символов, например «никакие два соседних не совпадают», держите длину текущей подходящей цепочки: увеличивайте её, пока условие выполняется, и начинайте заново, когда оно нарушено. После каждого шага сравнивайте текущую длину с лучшей.

Если в цепочке разрешено не больше k каких-то символов, используйте скользящее окно. Правая граница идёт по строке, а левая сдвигается вперёд, пока в окне снова не станет не больше k таких символов. Каждый символ входит в окно и выходит из него один раз, поэтому программа работает быстро на любой длине (пример 1).

Когда цепочка должна быть записью числа или выражения определённого вида, опишите её регулярным выражением и найдите совпадения функцией re.findall (пример 2). Проверьте, что шаблон запрещает то же, что условие: ведущие нули, два знака подряд, знак в начале или в конце записи.

Перед запуском на большом файле проверьте программу на короткой строке, ответ для которой вы знаете, — например, на типовом примере из условия.

Примеры с решением

Пример 1

Текстовый файл состоит из заглавных латинских букв X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых буква Z встречается не более двух раз. В ответе запишите это количество.

Файл данных: 24_ex1.txt — 1 строка, 19,5 КБ. Файл целиком:

YYYYXYYZZYXYYXYYZYXYXXXXYZYYXYZYXXXYYYYYYXXZYYYZYYYYXXYYYZXXYXXXYYYYXXYXYXXXXXXXXYYYXXYXYYXXXYZYXYXYYXZXXXXXXYYXXZYXXZXY

Решение на Python

s = open('24_ex1.txt').readline().strip()

best = 0
left = 0
z = 0  # сколько букв Z в окне s[left:right + 1]
for right in range(len(s)):
    if s[right] == 'Z':
        z += 1
    while z > 2:  # третья Z: сдвигаем левую границу за первую Z окна
        if s[left] == 'Z':
            z -= 1
        left += 1
    best = max(best, right - left + 1)
print(best)

Ответ: 119

Окно s[left:right + 1] всегда содержит не больше двух букв Z. Когда правая граница встречает третью Z, левая граница сдвигается за первую Z окна, и длина окна снова считается подходящей. В файле 20 000 символов, и программа делает около 40 000 шагов; на файле из 10 миллионов символов шагов будет около 20 миллионов, это несколько секунд.

Пример 2

Текстовый файл состоит из цифр от 0 до 9 и знаков «+». Определите максимальное количество идущих подряд символов, которые образуют корректную запись суммы натуральных чисел: каждое число записано без ведущих нулей, два знака «+» не стоят рядом, запись не начинается и не заканчивается знаком «+». Запись из одного числа тоже считается корректной. В ответе запишите количество символов.

Файл данных: 24_ex2.txt — 1 строка, 29,3 КБ. Файл целиком:

3773++6934+371069867+893972583+++30498598397809824+6+60+63989508004104+8+901+172441714+6+76341144+08948+4+9+989309642700

Решение на Python

import re

s = open('24_ex2.txt').readline().strip()

# число без ведущих нулей, затем сколько угодно раз «плюс и ещё такое же число»
pattern = r'[1-9][0-9]*(?:\+[1-9][0-9]*)*'
print(max(len(m) for m in re.findall(pattern, s)))

Ответ: 108

Часть шаблона [1-9][0-9]* описывает натуральное число без ведущих нулей, а группа (?:\+[1-9][0-9]*)* — сколько угодно продолжений вида «плюс число». Функция re.findall просматривает строку слева направо и от каждого места, где совпадение может начаться, берёт самое длинное, поэтому самая длинная корректная запись окажется среди найденных. Ноль отдельным числом здесь не считается: натуральные числа начинаются с 1.

Типичные ошибки

Потренироваться на тренажёре

Частые вопросы

Можно ли решить задание 24 ЕГЭ без программы?

На практике нет: в демоверсии 2027 года строка в файле занимает около 10 МБ. Вручную или поиском в текстовом редакторе такую строку не обработать, поэтому задание решают программой.

Как прочитать файл в задании 24?

Файл состоит из одной строки. В Python её читают так: s = open('24.txt').readline().strip(), где 24.txt — имя вашего файла.

Сколько баллов дают за задание 24?

1 первичный балл. Ответ — одно число, и его засчитывают, только если он полностью совпал с эталоном.

Официальные материалы

Другие задания

Все задания и структура экзамена — на странице ЕГЭ по информатике. Соседние разборы: задание 23 и задание 25.

Описание задания сверено 28 сентября 2026 года со спецификацией 2027 года (документы 2027 года). Примеры составлены нами по структуре демоверсии, каждое решение запущено, и напечатанный им ответ совпадает с ответом на странице. Кодолимп не связан с разработчиками экзамена. Заметили неточность — напишите нам.