Задание №24 — Обработка строк, нахождение подстроки
#69262Задание №24ФИПИ
Обработка символьных данных
Текстовый файл состоит из символов P, Q, R и S. Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет идущих подряд символов P.
Для выполнения этого задания следует написать программу.
Правильный ответ
188
Пояснение
Решение:
Запрещена только одна конфигурация — две буквы P подряд, то есть подстрока PP. Все остальные сочетания символов допустимы, поэтому серия обрывается ровно в тех местах, где встречается PP.
Идём по файлу и храним длину текущей допустимой серии cur. Если текущий и предыдущий символы оба равны P, старая серия закончилась, и новая начинается с текущего символа: cur = 1. Иначе cur += 1. Ответ — максимум cur.
s = open('53033_24.txt').read().strip()
mx = cur = 1
for i in range(1, len(s)):
if s[i] == 'P' and s[i - 1] == 'P':
cur = 1
else:
cur += 1
if cur > mx:
mx = cur
print(mx)
Важно, что при обрыве новая серия начинается именно со второй буквы P: она сама по себе запрещённой пары не образует и может стать началом следующего участка.
Программа выводит 188.
Ответ: 188