字串匹配之KMP演算法

2021-08-26 18:27:40 字數 450 閱讀 2212

問題定義:

字串匹配即是在所有文字t中,找出模式p的所有出現。

字串匹配常用的演算法有:

樸素演算法

rabin-karp演算法

有限自動機演算法

kmp演算法

所有演算法中,算kmp演算法效率最高。也較為難理解。作者曾經認真看了3遍嚴蔚敏的《資料結構》,遺憾的是沒有看懂,搞得我一度懷疑自己的智商很低。今天看《演算法導論》一遍就懂了,當然了,今天的快速理解也是建立在之前三遍的懵懂的基礎之上,但是我還是傾向於相信,嚴蔚敏老師的寫書得不夠好,不然我不會認真看了三遍都不理解。

學習kmp演算法建議還是看書,網上的資料不會比《演算法導論》講的好,不過我這裡有三點要提出來,以便幫助讀者理解kmp演算法:

1)kmp演算法需要用到乙個輔助陣列和乙個字首函式,輔助陣列包含了模式與自身的位移進行匹配的資訊。

2輔助陣列的實現也採用了kmp演算法

3)**示例:

字串匹配之KMP演算法

以前零零散散做了些kmp的題目,一直也沒找出時間整理,這一段又開始研究字串了,就順便把kmp整理了一下。廢話不說了,我們直接入題。說到kmp,首先應該知道,它是一種字串查詢演算法,因為是由乙個姓k,乙個姓m和乙個姓p的人聯合發表的,所以就叫kmp演算法了。kmp演算法是一種線性時間的的字串匹配演算法...

演算法 字串匹配之KMP

說人話就是 比如有乙個字串 bbc abcdab abcdabcdabde 我想知道,裡面是否包含另乙個字串 abcdabd 許多演算法可以完成這個任務,kmp演算法是最常用的之一。首先對於上面的 比如 我們首先要針對搜尋詞 abcdabd 算出一張 部分匹配表 接下來就很簡單了,將字串和搜尋詞都從...

字串匹配之KMP演算法

include define maxsize 100 typedef struct sqstring void strassign sqstring s,char cstr 初始化串 s.length i void destroystr sqstring s 釋放串 void strcopy sqs...