Для двух строк A и B мы определяем сходство строк как длину самого длинного префикса, общего для обеих строк. Например, сходство строк «abc» и «abd» равно 2, а сходство строк «aaa» и «aaab» равно 3.Обработка строк: вычисление «подобия строки с ее суффиксами»
Задача состоит в том, чтобы дать алгоритм вычисления суммы сходств строка S с каждым из ее суффиксов. Например, пусть строка будет: ababaa
. Затем суффиксами строки являются ababaa
, babaa
, abaa
, baa
, aa
и a
. Сходство каждой из этих строк со строкой ababaa
составляет 6,0,3,0,1,1
, соответственно. Таким образом, ответ 6 + 0 + 3 + 0 + 1 + 1 = 11
.
Так вы пытались его решить? Где вы застряли? Какую помощь вы ищете? – bobbymcr
Реализация алгоритма Укконена для построения дерева префикса в O (n) https://gist.github.com/3355993 – bicepjai
Алгоритм Ukkonen предназначен для построения дерева * суффикса *, что, разумеется, является именно тем, о чем идет речь. Дерево суффикса не совсем то же самое, что и суффиксный массив, хотя они, очевидно, связаны между собой. – tripleee