Это из cs50, pset6 DNA, но я спрашиваю о части кода. Этот код отлично работает для некоторых подстрок, но отключен для других, и я понятия не имею, что не так с моим кодом, пожалуйста, помогите мне выяснить, что с ним не так. Он работает для небольших образцов, но когда я запускал его в огромном файле, он был отключен для двух значений. Не стесняйтесь взорвать меня, я впервые использую StackOverflow. Заранее спасибо :)
def count_max_repeat(sequence, dna_sample):
maxDna = 0
temp = 0
nextseq = 0
index = 0
#count how many times sequence occurs
ranger = dna_sample.count(sequence, 0, len(dna_sample))
#loop through dna_sample for how many times sequence occurs
for count in range(ranger + 1):
#find first occurence of index in string
if (dna_sample.find(sequence, nextseq) != -1):
if(count == 0):
nextseq = dna_sample.find(sequence, nextseq)
#if the next sequence isn't matching, reset counter of repeated substring
if (dna_sample.find(sequence, nextseq) != nextseq):
nextseq = dna_sample.find(sequence,nextseq)
temp = 0
else:
#record last position of sequence
nextseq = dna_sample.find(sequence, nextseq) + len(sequence)
temp += 1
#checks if previous amount of repeated sequence is bigger, if not assigns maxDna to largest amount of repeating sequence
if (temp > maxDna):
maxDna = temp
print("maxDna: " + str(maxDna))
последовательность параметров - это подстрока, а параметр dna_sample - это вся строка
dna_sample
последовательности
Это файлы, которые дают неправильный вывод. При запуске этой программы вывод (maxDna) должен быть 22,33,43,12,26,18,47,41 (строка Лаванды). Я получаю 17, 33, 43, 7, 26, 18, 47, 41.