Обработка символьных строк: поиск подстроки по условию
Задание 24 · Билет 1 · ЕГЭ по информатике
Условие
В текстовом файле записана строка из заглавных латинских букв A, B и C. Определите максимальную длину подстроки, состоящей из одинаковых символов.
Скачивать не обязательно: если решаете на сайте, строка уже есть в песочнице. Скачайте, только чтобы посмотреть файл отдельно на компьютере.
Попробуйте программой
Необязательно, но удобно: напишите здесь свой код на Python, который найдёт ответ. Если не получится — откройте решение и вставьте готовую программу одной кнопкой.
Решите программой на Python
в браузереНапишите свой код, который найдёт ответ, и нажмите «Выполнить». Горячая клавиша запуска: Ctrl/⌘ + Enter.
Файл задачи уже в песочнице: task24-1-stroka.txt — читайте через open('task24-1-stroka.txt').
Разбор задачи
Задание 24 ЕГЭ по информатике — обработка символьных строк. В текстовом файле записана длинная строка из символов, и нужно найти максимальную длину подстроки, удовлетворяющей условию: например, самой длинной серии одинаковых букв или самой длинной части без двух одинаковых букв подряд.
Строка слишком длинная, чтобы перебирать её вручную, поэтому пишут короткую программу: она один раз проходит строку слева направо, ведёт длину текущего «подходящего» участка и запоминает лучший результат.
Что важно знать
- Задание высокого уровня — оценивается в 1 балл
- Ответ — одно целое число: длина самой длинной подходящей подстроки
- Проход со счётчиком: cur — текущая длина, best — лучшая; на каждом шаге сравниваем символ с предыдущим
План решения
- Перепишите условие: какую именно подстроку считаем подходящей.
- Прочитайте строку целиком и уберите перевод строки: open(...).read().strip().
- Заведите cur (текущая длина) и best (лучший результат) и идите по символам слева направо.
- На каждом шаге сравнивайте символ с предыдущим и увеличивайте cur или начинайте заново.
- Обновляйте best и в конце выведите его — это и есть ответ.
Потренируйся обрабатывать строки: разбери проход по шагам, а затем напиши программу, которая найдёт длину подстроки по условию.
Решение
Теория с нуля: что нужно знать
Решение
открыто шагов: 4 из 4Программа, которая находит ответ:
s = open('task24-1-stroka.txt').read().strip() # читаем строку из файла
best = 0 # самая длинная серия одинаковых букв
cur = 0 # длина текущей серии
prev = '' # предыдущая буква
for ch in s:
if ch == prev: # буква та же — серия продолжается
cur += 1
else: # буква сменилась — начинаем серию заново
cur = 1
prev = ch
if cur > best: # запоминаем максимум
best = cur
print(best) # выводим ответ Проверка
Типовые ошибки и проверка
- Не убирают перевод строки (.strip()) и считают лишний символ.
- Путают условия: в «серии одинаковых» счётчик сбрасывают при несовпадении, а в «без двух одинаковых подряд» — при совпадении.
- Начинают best с нуля и теряют первый символ: строка непустая, поэтому best ≥ 1.
- Ошибаются на единицу: длина подстроки — это число символов, а не разность индексов.
- Проверка: прогоните программу на коротком фрагменте (например, «ABBCCC») и посчитайте максимум вручную, затем запустите на полном файле.
Режимы
Сейчас открыт режим обучения: теория, разбор и ответ видны. Скоро появится режим проверки — только условие и поле ответа, без подсказок.
Практикум Все задания Режим проверки — скоро