Решение: Максимальный фрагмент с парами AB
Текстовый файл состоит из заглавных букв латинского алфавита $A$, $B$, $C$, $D$, $E$ и $F$. Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых пара символов $AB$ (в указанном порядке) встречается не более 110 раз. Для выполнения этого задания следует написать программу.
Решение по шагам
5 шаговСчитываем строку из файла и рассматриваем её как последовательность символов.
Расширяем правую границу текущего фрагмента. При добавлении символа проверяем, образовалась ли в конце фрагмента пара $AB$.
$$if\ s[r-1:r+1] = AB:\quad cnt \mathrel{+}= 1$$Если количество пар $AB$ стало больше 110, сдвигаем левую границу вправо. При удалении пары $AB$ из начала окна уменьшаем счётчик.
$$while\ cnt > 110:\quad l \mathrel{+}= 1$$После каждого расширения окна сравниваем его длину с текущим максимумом.
$$ans = \max(ans, r-l+1)$$Числовой результат можно получить только после обработки содержимого прилагаемого файла; его содержимое в исходных данных не передано.
Числовой ответ невозможно определить без содержимого прилагаемого файла.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Считать перекрывающиеся вхождения неправильно.
Проверять только количество букв A и B, а не соседних пар AB.
Не уменьшать счётчик при сдвиге левой границы окна.
Использовать фиксированный фрагмент вместо скользящего окна.