Задача к ЕГЭ по информатике на тему «задачи под вебы» №1

Задача с сайта https://kpolyakov.spb.ru/

Текстовый файл 24-280.txt состоит не более чем из 106  символов и содержит только заглавные буквы латинского алфавита. Определите максимальное количество идущих подряд символов, среди которых каждая из букв X  , Y  ,    Z  встречается не более трёх раз.

f = open("24-280.txt")
s = f.readline()
start = 0 # Начало текущей подстроки
# Счетчики для символов ’X’, ’Y’, ’Z’ в текущей подстроке соответственно
xc = yc = zc = 0
mx = 0 # Максимальная длина подстроки, удовлетворяющей условию
# Проходим по строке с помощью двух указателей (start и end)
for end in range(len(s)):
# Обновляем счетчики для символов ’X’, ’Y’, ’Z’
    if s[end] == ’X’: xc += 1
    if s[end] == ’Y’: yc += 1
    if s[end] == ’Z’: zc += 1
# Если количество ’X’, ’Y’ или ’Z’ превышает 3, сдвигаем начало подстроки
    while xc > 3 or yc > 3 or zc > 3:
# Уменьшаем счетчики, если символ в начале подстроки - ’X’, ’Y’ или ’Z’
        if s[start] == ’X’: xc -= 1
        if s[start] == ’Y’: yc -= 1
        if s[start] == ’Z’: zc -= 1
        start += 1 # Сдвигаем начало подстроки вправо
# Обновляем максимальную длину подстроки, если текущая подстрока длиннее
    if end - start > mx:
        mx = end - start
print(mx + 1)

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