Задание 24 ЕГЭ: фрагмент с двумя ограничениями
Фрагмент с ограничениями на две буквы. Тема номера — обработка символьных строк. Ниже — пример с ответом и решением; кнопкой под ним можно решить такую же задачу с другими числами, ответ проверится сразу.
Пример
Задание выполняется с использованием прилагаемого файла.
Текстовый файл 24.txt содержит строку из заглавных латинских букв A, B, C, D, E, F, всего не более 10 000 символов.
Определите максимальное количество идущих подряд символов, среди которых буква A встречается не более 26 раз и буква D — не более 22 раз.
Для выполнения этого задания следует написать программу.
Ответ
187Решение
Метод двух указателей: правый край окна идёт по строке, а левый сдвигается, пока в окне слишком много одной из букв. Каждое окно — самое длинное из заканчивающихся в данной позиции.
Ответ: 187.
s = open('24.txt').read().strip()
best = left = cx = cy = 0
for right, c in enumerate(s):
cx += c == 'A'
cy += c == 'D'
while cx > 26 or cy > 22: # окно нарушает условие — сдвигаем левый край
cx -= s[left] == 'A'
cy -= s[left] == 'D'
left += 1
best = max(best, right - left + 1)
print(best)