Все задачи №24
№24

Тройка ABC ровно 110 раз

Текстовый файл. Файл из букв A–F. Найди минимальное число подряд идущих символов, в которых тройка ABC встречается ровно 110 раз и последовательность заканчивается на C.

Источник: ФИПИ, № 31230

Скачать файл: task_31230_A.txt. В редакторе он уже лежит рядом с кодом, открывай как на экзамене: open('task_31230_A.txt').

Ответвпиши то, что вывела программа
Показать разбор
  1. Храни в списке индексы последних 110 вхождений ABC.
  2. Как только индексов стало больше 110, выкидывай самый ранний через pop(0).
  3. Когда индексов ровно 110, подстрока идёт от начала первого вхождения до буквы C последнего. Она сама заканчивается на C.
  4. Запоминай наименьшую длину.
s = open('task_31230_A.txt').readline().strip()
indexes = []
mn = float('inf')
for i in range(len(s) - 2):
    if s[i:i + 3] == 'ABC':
        indexes.append(i)
    if len(indexes) > 110:
        indexes.pop(0)
    if len(indexes) == 110:
        start_i = indexes[0]
        end_i = indexes[-1] + 2
        mn = min(mn, end_i - start_i + 1)
print(mn)