Обработка строк в ЕГЭ по информатике: самая длинная цепочка символов на Python
· 2 мин чтения · Редакция Skill Unit
В ЕГЭ по информатике есть задача с текстовым файлом, в котором одна очень длинная строка из букв. Вручную её не обработать, а программа на Python укладывается в десять строк. Почти все варианты сводятся к одному приёму — проходу по строке со счётчиком текущей цепочки.
Чтение файла
s = open('24.txt').read().strip()strip() убирает перевод строки в конце: без него последний символ может испортить подсчёт.
Шаблон 1. Самая длинная цепочка одинаковых символов
best = cur = 1
for i in range(1, len(s)):
if s[i] == s[i - 1]:
cur += 1
best = max(best, cur)
else:
cur = 1
print(best)Проверка на строке AABBBCAAAACBB: цепочки AA, BBB, C, AAAA, C, BB. Самая длинная — AAAA, программа печатает 4.
Шаблон 2. Самый длинный фрагмент без буквы C
best = cur = 0
for ch in s:
if ch != 'C':
cur += 1
best = max(best, cur)
else:
cur = 0
print(best)Для той же строки фрагменты без C: AABBB (5), AAAA (4), BB (2). Ответ 5.
Шаблон 3. Через регулярные выражения
Если условие можно описать как «подряд идущие символы из набора», удобно использовать модуль re:
import re
parts = re.findall(r'[AB]+', s)
print(max(len(p) for p in parts))Для примера это снова 5: самый длинный кусок только из A и B — AABBB.
Как не ошибиться
- Всегда проверяйте код на маленькой строке, ответ к которой посчитали руками.
- Следите за начальными значениями: в шаблоне 1 цепочка из одного символа уже имеет длину 1, в шаблоне 2 счёт начинается с 0.
- Не забывайте обновлять максимум внутри цикла, а не только при смене символа — иначе потеряете цепочку в самом конце строки.
- Строка длиной в миллион символов обрабатывается за доли секунды; если программа «висит», скорее всего в ней вложенный цикл.
Все задания с программированием, разбор шаблонов и пробные варианты — в курсе подготовки к ЕГЭ по информатике. «Быстрый старт» бесплатный.
Хотите пройти путь на практике?
Курс «ЕГЭ по информатике»: короткие уроки, практические задания и проверка ответов. Первый урок бесплатно.
Смотреть курс