Задача с сайта https://kpolyakov.spb.ru/
Текстовый файл 24-280.txt состоит не более чем из символов и содержит только заглавные буквы латинского алфавита. Определите максимальное количество идущих подряд символов, среди которых буквы
и
встречаются ровно по одному разу, а буква
не встречается совсем.
Задача с сайта 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