Поиск самого длинного ряда последовательных повторов подстрок в строке (python) - PullRequest
0 голосов
/ 20 июня 2020

Это из 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.

...