字串匹配在文字處理裡非常重要,我們採用簡潔的python**把以下演算法一一實現並講解。
樸素演算法 (***** algorithm)
rabin-karp 演算法
有限自動機演算法(finite automation)
knuth-morris-pratt 演算法(kmp algorithm)
boyer-moore 演算法
simon 演算法
colussi 演算法
galil-giancarlo 演算法
apostolico-crochemore 演算法
horspool 演算法和
sunday 演算法
為了更好地闡述問題,我們先規定好統一的符號,便於後續的描述。
字串匹配演算法通常分為兩個步驟:預處理(preprocessing)和匹配(matching),所以在討論演算法的時候要同時給出兩者的時間複雜度。
樸素演算法即把模式與文字按照位置一一查詢,**如下
def string_match_*****_algorithm(text, pattern):
for i in range(len(text)):
for j in range(len(pattern)):
if i+j >= len(text):
break
if pattern[j] != text[i+j]:
break
else:
return i
return -1
可見,演算法時間複雜度為
字串匹配演算法
首先引用一下另一篇文章中對字串匹配的介紹 字串匹配指的是從文字中找出給定字串 稱為模式 的乙個或所有出現的位置。本文的演算法一律輸出全部的匹配位 置。模式串在 中用x m 來表示,文字用y n 來,而所有字串都構造自乙個有限集的字母表 其大小為 根 據先給出模式還是先給出文字,字串匹配分為兩類方法 ...
字串匹配演算法
平常操作文字的時候,經常需要操作對字串進行操作。而字串中最重要的一種操作就叫匹配,字串的匹配演算法很多,人們最熟悉的莫過於kmp演算法了。今天就來談一談一些字串匹配演算法。先來說說大名鼎鼎的kmp演算法,這個演算法出現在無數的資料結構與演算法書上面。它的策略很簡單 當模式串第k個字元不匹配主串中第s...
字串匹配演算法
一 bf演算法 bf演算法是普通的模式匹配演算法,其基本思想就是將目標串的第乙個字元與模式串的第乙個字元進行匹配。若相等,則繼續比較第二個字元 若不相等,則比較目標串的第二個字元和模式串的第乙個字元。依次比較下去,直到得出最後的匹配結果。示例 static int bf const char src...