Ваш код ищет и считает все экземпляры подстроки 'AGATC'
. Однако вы хотите найти самую длинную последовательную последовательность из повторных экземпляров из AGATC
.
Сравните ожидаемый и фактический результат в следующей строке (я добавил пробелы для ясности):
AGATC TTT AGATC AGATC
Ваш код даст ответ «3», тогда как ожидаемый ответ - «2», поскольку самое длинное повторение из 'AGATC'
с равно двум.
Существует несколько способов решения проблемы. Если вы хотите использовать регулярные выражения, вы можете искать непересекающиеся повторы:
pattern = re.compile(r'(AGATC)+')
При этом каждый match
будет содержать полное совпадение повторов. Вы можете найти самый длинный, вычитая end()
каждого матча из start()
. Чтобы получить количество повторений, разделите длину совпадения на длину вашего STR (т.е. len('AGATC')
).