1 Отредактировано romensd (2016-05-19 15:35:56)

Тема: Максимальное число повторов подстроки в строке

Всем привет.
Помогите пожалуйста решить проблему.
Нужен алгоритм который находит все дубликаты подряд.
Я использовал алгоритм Мейна-Лоренца,но он находит пары , а мне нужно найти все

К примеру:
    ['A', 'C', 'A', 'B', 'A', 'B', 'A', 'E', 'E', 'G', 'O', 'C', 'A', 'G', 'O', 'C', 'A', 'G', 'O', 'C', 'A']
   
Результат Мейна-Лоренца.
    [ 7 ...  8] = ['E', 'E']
    [ 2 ...  5] = ['A', 'B', 'A', 'B']
    [ 3 ...  6] = ['B', 'A', 'B', 'A']
    [ 10 ...  17] = ['O', 'C', 'A', 'G', 'O', 'C', 'A', 'G']
    [ 13 ...  20] = ['G', 'O', 'C', 'A', 'G', 'O', 'C', 'A']
    [ 12 ...  19] = ['A', 'G', 'O', 'C', 'A', 'G', 'O', 'C']
    [ 11 ...  18] = ['C', 'A', 'G', 'O', 'C', 'A', 'G', 'O']
    [ 9 ...  16] = ['G', 'O', 'C', 'A', 'G', 'O', 'C', 'A']
Ожидамений результат:
    [ 7 ...  8] = ['E', 'E']
    [ 2 ...  5] = ['A', 'B', 'A', 'B']
    [ 3 ...  6] = ['B', 'A', 'B', 'A']
    [ 9 ...  20] = ['G', 'O', 'C', 'A', 'G', 'O', 'C', 'A','G', 'O', 'C', 'A']
    [ 10 ...  17] = ['O', 'C', 'A', 'G', 'O', 'C', 'A', 'G']
    [ 12 ...  19] = ['A', 'G', 'O', 'C', 'A', 'G', 'O', 'C']
    [ 11 ...  18] = ['C', 'A', 'G', 'O', 'C', 'A', 'G', 'O']

То есть хотелось бы такой алгоритм как этот, но чтобы искал НЕ тандемы а ВСЕ повторы которые идут подряд.

Спасибо