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