字串相關概念

2021-08-14 20:59:09 字數 1540 閱讀 5340

本文簡單講解字串的相關概念。如:回文、子串、子串行、字首樹、字尾樹、字尾陣列、匹配、字典序。

1.回文

所謂回文字串,就是指乙個字串,從左到右讀和從右到左讀是完全一樣的,比如」xyx」。

2.子串行

對於乙個序列a=a[1],a[2],……a[n]。則非空序列a2=a[p1],a[p2]……a[pm]為a的乙個子串行,其中1<=p1< p2<…..< pm<=n。

如:「welcome」 子串行:wl、wcome、ecome….

3.子串

串中任意個連續的字元組成的子串行稱為該串的子串。

如:「welcome」 子串:we、come、welcome…..

子串數量的計算方法:若字串的長度為n,則子串的個數就是[n*(n+1)/2]個(不含空子串)

3.trie樹

trie樹,又稱字典樹、字首樹,是一種樹形結構,是雜湊樹的變種,是一種用於快速檢索的多叉樹結構。

典型應用是用於統計和排序大量的字串(但不僅限於字串)。經常被搜尋引擎系統用於文字詞頻統計。它的優點是:最大限度地減少無謂的字串比較,查詢效率比雜湊表高。

trie樹的核心思想是空間換時間。利用字串的公共字首來降低查詢時間的開銷以達到提高效率的目的。

trie樹的缺點是記憶體消耗非常大。

4.字尾樹

字尾樹,就是把字串的所有字尾儲存並進行壓縮的字典樹。相對於字典樹來說,字尾樹並不是針對大量字串的,而是針對乙個或幾個字串來解決問題。如字串的回文子串,兩個字串的最長公共子串等等。

5.字尾陣列

字尾陣列是處理字串的有力工具,是字尾樹的乙個非常精巧的替代品。它比字尾樹容易程式設計實現,能夠實現字尾樹的很多功能而時間複雜度也並不遜色。而且,它比字尾樹所占用的記憶體空間小很多。

定義:字尾陣列sa是乙個一維陣列,它儲存1..n的某個排列sa[1],sa[2],……,sa[n],並且保證suffix(sa[i])

6.匹配
定義:字串匹配問題就是在乙個大的字串t中搜尋某個字串p的所有出現位置。其中,t稱為文字,p稱為模式。

7.字典序

字典序就是指對給定的字串,按照首字母的字典值排序。如果首字母相同的字串,則按照第二個字母的字典序排序,依次類推。

c 中字串的相關概念

在c語言中使用字元陣列來模擬字串 c語言中的字串是以 0 結束的字元陣列 c語言中的字串可以分配於棧空間,堆空間或者唯讀儲存區 字串操作 陣列法,下標法 字元陣列名,是個指標,是個常量指標 字元陣列名,代表字元陣列首元素的位址,不代表整個陣列。如果代表這個陣列,那需要陣列資料型別的知識!void c...

字串相關

30 字串相關 30.1追加字元 nsmutablestring string nsmutablestring alloc init nsstring stroneintro info stringbyreplacingoccurrencesofstring withstring 30.3字串比較 ...

字串相關

字串轉換相關部落格 使用stringstream字串轉數字 include include includeusing namespace std int main 使用sscanf 進行字串轉數字char str 1234321 int a sscanf str,d a char str 123.3...