Подскажите, что не так с кодом. Где может быть ошибка?

Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите максимальное количество идущих подряд символов, среди которых не более одной буквы A.

f = open('24 (23).txt').read()
lst = []
n = ''
for i in range(len(f)):
    n += f[i]
    if n.count('A') > 1:
        lst.append(len(n))
        n = 'A'
print(max(lst))

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

Автор решения: CrazyElf
    if n.count('A') > 1:
        lst.append(len(n)) # <- тут учтена лишняя буква А!

Вот у вас в n получается, что уже две буквы A, а вы длину всей этой последовательности в список добавили, включая лишнюю букву A. Последнюю A не нужно учитывать, т.е. нужно добавлять в список len(n) - 1.

    if n.count('A') > 1:
        lst.append(len(n) - 1) # <- выкинули лишнюю А

Кроме того, не учтена последовательность символов в конце файла. А вдруг она длиннее всего? Поэтому уже после окончания цикла нужно добавить длину текущей последовательности (она всегда корректная, ведь if внутри цикла работает для этого):

...
lst.append(len(n)) # <- после окончания цикла!
print(max(lst))
→ Ссылка