Определите максимальное количество идущих подряд символов, среди которых не более одной буквы 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 шт):
for x in st:
if x == "A":
cur_len += 1
if cur_len > max_len:
max_len = cur_len
else:
cur_len = 0
вы подсчитываете длину последовательности только, когда у вас буква "А", а в задаче сказано:
Определите максимальное количество идущих подряд символов, среди которых не более одной буквы A.
Так у вас в задаче ошибка или в коде?
Если судить по заданию, то
- минимум надо
if x != "A":сделать - надо учесть ситуацию вида
'BBABBBAAA'в которой надо выделить'BBABBB'
Так, в качестве альтернативного алгоритма...
Разбиваем строку на подстроки по букве "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)