Работа с текстовым файлом на Python

Текстовый файл содержит более 10000000 символов. Определите максимальную длину цепочки символов, среди которых каждые три соседних символа одинаковые.

f = open("file.txt", "r")
a = list(f.read())
count = 0
for i in range(len(a)):
    try:
        if a[i-4] == a[i-3] == a[i-2] and a[i-1] == a[i] == a[i+1] and a[i+2] == a[i+3] == a[i+4]:
            count += 1
    except: pass
print(count)

Я не понял условие задачи, ответ получается слишком большой


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Скажем, нашли вы такую цепочку достаточно длинную. Как она может выглядеть? Я имею в виду не всю строку, а только искомую цепочку. Для определённости первый символ a. Тогда три первых символа цепочки тоже a - цепочка начинается с aaa. А вторые три символа? Тоже aaa. Значит цепочка начинается с aaaa. И так далее - в самой длинной цепочке из условия все символы одинаковые: aaa...a.

Переформулируем: надо найти самую длинную цепочку одинаковых символов подряд.

import itertools


with open('file.txt') as f:
    a = f.read()

#     из длин выбираем максимальную
#     |   
#     |   из групп нам нужны            собираем группы
#     |   только их длины               одинаковых символов
#     |   |                             |
#     v   v                             v
#     --- -----------------             --------------------
print(max(sum(1 for _ in g) for _, g in itertools.groupby(a)))
→ Ссылка