Suffix Array
後綴是甚麼? 比方說字串 S = banana,S的所有後綴就是: banana anana nana ana na a 將這些後綴排序後: a ana anana banana na nana Suffix Array就是將字串的每個後綴進行排序後,紀錄該後綴開頭index的陣列: int SA[N]; SA[i]; // 表示順序第i個後綴的開頭index 如果 SA[3] = 0 ,表示字典序第 4 小的後綴是從 S[0] 開頭的,也就是 banana。 例題:算出 s = "aba" 的 SA 陣列 ans SA[3] = {2, 0, 1}; 怎麼找出 Suffix Array ? 暴力法就是把所有後綴抓出來,然後進行排序。顯然這個方法的時間複雜度是 $O(N^2\log N)$ (別忘了比較兩個字串要 $O(N)$)。 ...