№24 · решено
Тройка ABC ровно 110 раз
Текстовый файл. Файл из букв A–F. Найди минимальное число подряд идущих символов, в которых тройка ABC встречается ровно 110 раз и последовательность заканчивается на C.
Источник: ФИПИ, № 31230
Скачать файл: task_31230_A.txt. В редакторе он уже лежит рядом с кодом, открывай как на экзамене: open('task_31230_A.txt').
Ответвпиши то, что вывела программа
Показать разбор
- Храни в списке индексы последних 110 вхождений ABC.
- Как только индексов стало больше 110, выкидывай самый ранний через pop(0).
- Когда индексов ровно 110, подстрока идёт от начала первого вхождения до буквы C последнего. Она сама заканчивается на C.
- Запоминай наименьшую длину.
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)