演算法 · 6 個細項
String Algorithms字串演算法
字串比對的暴力法最壞是 O(nm)。這個主題的每個演算法都在用不同方式避免重複比對:雜湊用數字代替字串、KMP 與 Z 利用已比對過的資訊、Manacher 利用回文的對稱性。
為什麼要學 String Algorithms
現實中的應用細項
6 篇#演算法複雜度難度狀態
01String Hashing 字串雜湊多項式雜湊、模數與碰撞用在:快速比較子字串是否相等O(n)空間 O(n)可學習02Rabin-Karp 滾動雜湊比對視窗移動時 O(1) 更新雜湊用在:抄襲偵測、多模式比對平均 O(n+m)空間 O(1)可學習03KMP 前綴函數比對失敗函數讓比對指標不回頭用在:文字搜尋、入侵偵測系統的特徵比對O(n+m)空間 O(m)可學習04Z-Algorithm Z 函數每個位置與整串的最長共同前綴用在:字串比對、週期偵測O(n+m)空間 O(n)可學習05Manacher 最長回文利用已知回文的對稱性省掉重複展開用在:DNA 回文片段、文字分析O(n)空間 O(n)可學習06Trie Applications 字典樹應用自動補全、Word Search II、多模式比對用在:搜尋建議、敏感詞過濾O(L)空間 O(ΣL)可學習