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

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

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

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

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

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