Задача к ЕГЭ по информатике на тему «поиск максимальной подстроки» №1

Дан файл 24-280.txt. Необходимо найти самую длинную подстроку, начинающуюся на символ C  и оканчивающуюся символом D  , и не содержащую других символов C  и D  .

Способ 1

f = open("24-280.txt")
s = f.readline()
# Инициализируем переменные:
# l - текущая длина подстроки, начинающейся на ’C’
# lmax - максимальная длина найденной подстроки
l = lmax = 0
# Проходим по каждому символу в строке
for i in s:
    # Если символ - ’C’, начинаем новую подстроку
    if i == ’C’:
        l = 1  # Начинаем считать длину с 1
    # Если символ - ’D’, проверяем и обновляем максимальную длину
    elif i == ’D’:
        lmax = max(l, lmax)  # Сравниваем текущую длину с максимальной
        l = 0  # Обнуляем текущую длину, так как подстрока закончилась
    # Если текущая длина больше 0 (т.е. мы находимся в подстроке)
    elif l > 0:
        l += 1  # Увеличиваем длину подстроки на 1
# Печатаем максимальную длину подстроки, увеличенную на 1,
# чтобы учесть символ ’C’ в начале подстроки
print(lmax + 1)

Способ 2

from re import *
f = open("24-280.txt")
s = f.readline()
# Используем регулярное выражение для поиска всех подстрок,
# которые начинаются с ’C’, заканчиваются ’D’ и не содержат других ’C’ и ’D’
t = findall(’C[̂CD]*D’, s)
print(max(map(len, t)))

Ответ: 115
Оцените статью
Я решу все!