字串演算法:概覽
Published: Sat Feb 21 2026 | Modified: Sat Feb 07 2026 , 1 minutes reading.
字串演算法:編織文字的人
巴別圖書館
想像一座包含了字母所有可能組合的圖書館。在那無限的混亂中尋找一個特定的句子似乎是不可能的。 字串演算法就是這片混亂中的圖書管理員。她們回答兩個基本問題:
- 搜尋: 「這本書裡有『愛』這個字嗎?」
- 壓縮: 「我能用更少的頁數重寫這本書而不丟失任何含義嗎?」
在軟體中,字串無處不在。原始碼、DNA 序列、HTTP 請求和用戶日誌本質上都是字串。掌握字串演算法意味著掌握資訊流本身。
模式的策略
在本章中,我們將探索處理文本的不同方式:
| 概念 | 靈魂 / 隱喻 | 代表演算法 | 最佳應用場景 |
|---|---|---|---|
| 前綴 | 先知 根據妳已經輸入的內容預測未來。 | Trie 樹 (前綴樹) | 自動補全 「搜尋聯絡人…」 |
| 匹配 | 單向舞者 從不回頭。如果匹配失敗,她會智能地向前滑動。 | KMP (Knuth-Morris-Pratt) | 搜尋 (Ctrl+F) 在文本中查找關鍵字。 |
| 相似度 | 誤差測量者 計算兩個單詞之間隔了多少個錯別字。 | Levenshtein 距離 (編輯距離) | 拼寫檢查 「您是不是要找…?」 |
| 壓縮 | 哈夫曼樹 給常用詞分配短代碼,給罕見詞分配長代碼。 | 哈夫曼編碼 (Huffman) | ZIP / JPEG 減小檔案體積。 |
字串的三大法則
- 前綴 vs. 後綴: 大多數字串魔法都發生在邊緣。知道一個字串如何開始(前綴)或如何結束(後綴),往往能告訴妳關於中間部分的一切。
- 狀態機: 字串演算法通常只是一個在狀態序列中移動的機器人。「我看到了一個 ‘H’,現在我在等一個 ‘E’…」
- 字母表大小: 複雜度往往取決於字母表 () 的大小。搜尋二進位 (0/1) 與搜尋中文文本 (20,000+ 字元) 是不同的挑戰。
小結
在本章中,我們將看到搜尋引擎如何索引網絡,以及 ZIP 檔案如何將千兆字節壓縮為兆字節。我們將明白,文本不僅僅是數據;她是一種等待被發現的結構。
讓我們從最直觀的結構開始:Trie 樹。
