本文針對資料結構基礎系列網路課程(4):串中第5課時串的模式匹配(kmp演算法)。
kmp演算法:
#include
#include "sqstring.h"
void getnext(sqstring t,int
next) /*由模式串t求出next值*/
else
k=next[k];
}}int kmpindex(sqstring s,sqstring t) /*kmp演算法*/
else j=next[j]; /*i不變,j後退*/
}if (j>=t.length)
return(i-t.length); /*返回匹配模式串的首字元下標*/
else
return(-1); /*返回不匹配標誌*/
}int main()
修正後的kmp演算法
#include
#include "sqstring.h"
void getnextval(sqstring t,int nextval) //由模式串t求出nextval值
else k=nextval[k];
}}int kmpindex1(sqstring s,sqstring t) //修正的kmp演算法
else
j=nextval[j];
}if (j>=t.length)
return(i-t.length);
else
return(-1);
}int main()
資料結構 串的模式匹配 KMP演算法
目錄概念 簡述kmp演算法原理 計算next陣列 kmp演算法 測試 改進kmp演算法簡介 從s中匹配t串,在bf演算法中,通過指標回溯不斷進行匹配,其思想是窮舉。效率很低,但有些串有一定的規律,不需要回溯s串的指標,這就是kmp演算法。比如 s aaaaaab t aaab 在進行比較時,如果按照...
大話資料結構之串與模式匹配KMP
堅持用blog記錄學習之路,加油 2019.4.29 陳百強 偏偏喜歡你 typedef char string maxsize 1 0號單元存放串的長度 init status strassign string t,char chars strcopy status strcopy string ...
資料結構 串的樸素模式和KMP匹配演算法
一 樸素模式 假設我們要從主串s goodgoogle 中找到子串t google 的位置,步驟如下 i表示主串的當前位置下標,j表示子串的當前位置下標,如上圖在第一輪比較 i 1開始 中j 4和i 4的位置不匹配,接下來就要指標回退,從i 2開始比較,如下 如此反覆直到比較到 i 主串長度 子串長...