Не получается посчитать максимальную, подряд идущую последовательность символов 'ABA'
Допустим, есть последовательность символов 'ABAABABBBBBBBB' Моя задача, найти максимальное количество подряд идущих последовательностей 'ABA' В данном случае, ответ будет m = 2. Первые 6 символов. У меня прога печатает m=1. Почему-то каждый раз обнуляя переменную k. Не могу понять почему.
s = 'ABAABAABABBBB'
print (s)
k=0
m = 0
for i in range(2,len(s)):
if s[i-2] == 'A' and s[i-1]=='B' and s[i]=='A':
k=k+1
m = max(k,m)
i += 2
else:
k=0
print(m)
Ответы (1 шт):
Пример не очень корректный. Все же по нему получается 3 подстроки подряд. Плюс с константами немного подошиблись и с логикой. Ну и как было правильно замеченно, тут цикл for не подходит. Нужен while
Получилось как-то так
s = 'ABAABABBABABBBB'
print (s)
m = 0
k = 0
i = 2
while i < len(s):
if s[i-2] == 'A' and s[i-1]=='B' and s[i]=='A':
k += 1
i += 3
else:
i += 1
m = max(k, m)
k = 0
print(m)
Т.е. логика примерно следующая: если условие соблюдается, то увеличиваем счетчик количества подстрок k в текущей последовательности.
Как только условие не сработало, то сравниваем число подсток в последовательности, с тем что уже было. Это функция max и переменная m. А счетик подстрок k обнуляем.
Ну и если условие выполняется, то переходим на три символа вперед. А если нет - то только на один