Предположим, я создал массив суффиксов, то есть массив целых чисел, задающий начальные позиции всех суффиксов строки в лексикографическом порядке.
Пример: для строки str=abcabbca
,
массив суффиксов:
suffixArray[] = [7 3 0 4 5 1 6 2]
Объяснение:
i Suffix LCP of str and str[i..] Length of LCP
7 a a 1
3 abbca ab 2
0 abcabbca abcabbca 8
4 bbca empty string 0
5 bca empty string 0
1 bcabbca empty string 0
6 ca empty string 0
2 cabbca empty string 0
Теперь, когда построено это suffixArray
, я хочу найти длину самого длинного общего префикса (LCP) между str
(самой строкой) и каждым другим суффиксом. Каков наиболее эффективный способ сделать это?