Определите максимальное количество идущих подряд символов, среди которых не более одной буквы A. A

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

f = open("24.txt")
st = f.read()
f.close()
cur_len = 0
max_len = 0
for x in st:
    if x == "A":
        cur_len += 1
        if cur_len > max_len:
            max_len = cur_len
    else:
        cur_len = 0
print(max_len)

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

Автор решения: Zhihar
for x in st:
    if x == "A":
        cur_len += 1
        if cur_len > max_len:
            max_len = cur_len
    else:
        cur_len = 0

вы подсчитываете длину последовательности только, когда у вас буква "А", а в задаче сказано:

Определите максимальное количество идущих подряд символов, среди которых не более одной буквы A.

Так у вас в задаче ошибка или в коде?

Если судить по заданию, то

  1. минимум надо if x != "A": сделать
  2. надо учесть ситуацию вида 'BBABBBAAA' в которой надо выделить 'BBABBB'
→ Ссылка
Автор решения: GrAnd

Так, в качестве альтернативного алгоритма...
Разбиваем строку на подстроки по букве "A" и сразу вычисляем их длины. Далее в цикле складываем длины соседних подстрок и берём из этих сумм максимальную. Ну и прибавляем единицу так как сама буква "А" не была включена ни в одну из подстрок. Для исходной строки без букв "А" делается отдельное вычисление (просто берётся длина всей строки).

with open("24.txt") as f:
    s = f.read().strip()

seq = list(map(len, s.split("A")))
result = max(map(sum, zip(seq, seq[1:])))+1 if len(seq) > 1 else len(s)

print(result)
→ Ссылка