数据结构与算法 / 字符串匹配算法汇总
生活随笔
收集整理的這篇文章主要介紹了
数据结构与算法 / 字符串匹配算法汇总
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
零、前言
一、單模式串匹配
定義:每次,模式串只能和字符串集合中一個串進行匹配。
1、BF:簡單粗暴,主串和模式串都不太長,時間復雜度為 O(m*n) 。
2、KP:字符集范圍不要太大且模式串不要太長, 否則 hash 值可能沖突,時間復雜度為 O(n) 。
3、naive-BM:模式串最好不要太長(因為預處理較重),比如 IDE 編輯器里的查找場景; 預處理的時間復雜度為?O(m*m),匹配的時間復雜度為 O(n),實現較復雜,需要較多額外空間。
4、KMP:適合所有場景,整體實現起來也比 BM 簡單,時間復雜度為 O(n+m),僅需一個 next 數組的 O(n) 額外空間。
二、多模式串匹配
定義:每次,模式串可以和字符串集合中多個串進行匹配。
1、naive-Trie:適合多模式串公共前綴較多的匹配,時間復雜度為 O(n*k) ,即:建 Trie 時間復雜度為 O(n),搜索的時間復雜度為 O(k),n 為字符串集中所有字符的數量,k 為要搜索的字符串的長度。
2、AC 自動機:適合大量文本中多模式串的精確匹配查找,可以到 O(n) 。
?
極客時間:《數據結構與算法之美》,《36.AC自動機:如何用多模式串匹配實現敏感詞過濾功能》ziyuan 的評論。
?
(SAW:Game Over!)
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的数据结构与算法 / 字符串匹配算法汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构与算法 / 字符串匹配 / Tr
- 下一篇: 数据结构与算法 / 总章