基礎:字母表、字串與語言

前綴、後綴與子字串(prefix, suffix and substring)

這三個詞替「一個字串如何坐落在另一個字串裡」的自然方式取了名字,就像在較大的字裡看見藏著的較小字。前綴是從前面取下的一段,後綴是從後面取下的一段,子字串則是從中間(或前、或後)取下的任意一段連續區塊。在字 concatenation 裡,con 是前綴、tion 是後綴、caten 是子字串。

精確地說,若 w 可寫成 p 接上某段東西,即 w = p y(存在某字串 y),則字串 p 是 w 的前綴。若 w = x s(存在某字串 x),則字串 s 是 w 的後綴。若 w = x u y(存在某字串 x、y),即 u 以一段連續符號區塊的形式出現在 w 內,則字串 u 是 w 的子字串(有時稱為因子)。空字串 ε 是每個字串的前綴、後綴與子字串,而整個字串 w 也是它自己的前綴、後綴與子字串。請注意「連續」一詞:在 abc 中,a 與 c 合起來不是子字串,因為它們並不相鄰。挑出不相鄰的符號得到的是子序列,那是另一個概念。

這些概念不斷出現。樣式比對與搜尋就是在找子字串;許多語言定義被寫成「L 中沒有字串具有某某前綴」;剖析每次讀入輸入的一個前綴。把前綴、後綴、子字串分清楚雖小,但每當問題談到「樣式能出現在字串的哪裡」時都會派上用場。

對 w = abca:前綴有 ε、a、ab、abc、abca;後綴有 ε、a、ca、bca、abca;bc 是子字串;位置 1 與 4 的兩個 a 構成子序列,但不是子字串。

子字串必須連續;不相鄰的挑選是子序列,不是子字串。

子字串指連續的符號。子序列(可以跳過符號)是另一個、較弱的概念;別把兩者混淆。

又称
字首字尾子字串factor