Algorithm - 字串名詞簡介

  1. 字元 (character):

孤單的一個符號。’7’,’1’, ’ 阿’, ’2’, ’ a’, ’ X’ 2. 字元集 (Alphabet):

由字元組成的集合,通常會用\(\sum\)表示。 3. 字串 (String):

由字元集中的字元構成的序列。”7122” 4. 子字串 (Substring):

字串中的一段連續字元。”71” in ”7122” 5. 子序列 (Subsequence):

字串中不需連續的一斷字元。”72” in ”7122” 6. 前綴 (Prefix):

一個子字串包含第一個字元。”7”, ”71”, ”712”, ”7122” in ”7122”,在這裡所有文章我會命名為前總和,方便閱讀。 7. 後綴 (Suffix):

一個子字串包含最後一個字元。”2”, ”22”, ”122”, ”7122” in ”7122”,,在這裡所有文章我會命名為後總和,方便閱讀。 8. 字典序 (Alphabetical Order):

定義字串間的大小。先定義字元間的大小:\[’\,’ < ’a’ < ’b’ < ’c’ < ’d’ < …< ’z’\]通常就是照著 ASCII 碼的編排順序,要注意的是 空字元 比其他字元都小 接下來從第一個位置一位一位比對,由左而右比對方小的就是比較小的字串。 9. 後綴數組 (Suffix Array):

將一個字串的所有後綴(後總和) ,照字典序排序後,所得的名次陣列。\[Sa[i]: 第i個後綴\] 10. 排名數組 (Rank Array):

後綴數組逆數組\[Ra[i]: 第 i 個後綴是*第幾名*\] 11. 最長共同前綴 (Longest Common Prefix):

兩個字串,從第一位一位一位比對,直到不一樣就停止 \(ex:\)
’712221212’ 和’712222222’ 的LCP(最長共同前綴):’71222’。 12. lcp(I, J):

對於一個字串,他的第 I 個後綴和第 J 個後綴的 LCP 有多長 13. LCP(I, J):

對於一個字串,他的第 I 名後綴與第 J 名後綴的 LCP 有多長 14. height[i]:

對於一個字串,LCP(i − 1, i) 15. h[i]:

對於一個字串,LCP(Ra[i] − 1, Ra[i])

# 參考


建國中學 2012 年資訊能力競賽培訓講義 - 08