模式匹配kmp演算法(c++)
啃了兩天,總算是把kmp拿下了。
唉 怪當初資料結構課沒好好聽
void getnext(int next[],string t)
{
int j=0,k=-1;
next[0]=-1;
while(j<t.length()-1)
{
if(k == -1 || t[j] == t[k])
{
j++;k++;
if(t[j]==t[k])//當兩個字元相同時,就跳過
next[j] = next[k];
else
next[j] = k;
}
else k = next[k]; // k回溯到當前指標的前一個位置也就是第k個元素在失配時,子串的第next[k]個元素與當前母串的位置進行匹配
}
}
int kmp(string s,string t)
{
int next[maxsize],i=0,j=0;
getnext(next,t);
while(i<s.length()&&j<t.length())
{
if(j==-1 || s[i]==t[j])
{
i++;
j++;
}
else
j=next[j];
}
if(j>=t.length())
return (i-t.length()); //匹配成功,返回子串的位置
else
return -1; //沒找到
}
相關文章
- KMP模式匹配演算法KMP模式演算法
- KMP字串模式匹配詳解KMP字串模式
- KMP字串匹配演算法KMP字串匹配演算法
- 字串匹配演算法:KMP字串匹配演算法KMP
- 單模式匹配 KMP 演算法 簡易版學習筆記模式KMP演算法筆記
- 字串匹配問題——KMP演算法字串匹配KMP演算法
- 字串匹配之KMP《演算法很美》字串匹配KMP演算法
- 字串匹配演算法(三)-KMP演算法字串匹配演算法KMP
- 字串匹配-BF演算法和KMP演算法字串匹配演算法KMP
- 字串匹配基礎下——KMP 演算法字串匹配KMP演算法
- kmp字串匹配,A星尋路演算法KMP字串匹配演算法
- 【字串匹配】KMP字串匹配KMP
- 匹配字串之——KMP演算法深入理解字串KMP演算法
- 快速字串匹配一: 看毛片演算法(KMP)字串匹配演算法KMP
- 神奇的字串匹配:擴充套件KMP演算法字串匹配套件KMP演算法
- 把KMP演算法嚼碎!(C++)KMP演算法C++
- 字串匹配演算法之 BF 和 KMP 講解字串匹配演算法KMP
- 【大話資料結構C語言】22 串的快速模式匹配演算法(KMP演算法)資料結構C語言模式演算法KMP
- 資料結構-KMP模式演算法資料結構KMP模式演算法
- 圖解KMP字串匹配演算法+程式碼實現圖解KMP字串匹配演算法
- 第五章 字串專題 ---------------- 字串匹配(二)----KMP演算法字串匹配KMP演算法
- KMP字串匹配學習筆記KMP字串匹配筆記
- 【資料結構與演算法】字串匹配(Rabin-Karp 演算法和KMP 演算法)資料結構演算法字串匹配KMP
- KMP 演算法KMP演算法
- KMP演算法KMP演算法
- 【演算法】KMP演算法演算法KMP
- 【leetcode】28. Implement strStr() 字串匹配KMP BMLeetCode字串匹配KMP
- 演算法之KMP演算法KMP
- 高效字串匹配演算法——BM 演算法詳解(C++)字串匹配演算法C++
- 演算法(2)KMP演算法演算法KMP
- Python 細聊從暴力(BF)字串匹配演算法到 KMP 演算法之間的精妙變化Python字串匹配演算法KMP
- 白話 KMP 演算法KMP演算法
- 【演算法】KMP初識演算法KMP
- KMP演算法詳解KMP演算法
- 解讀KMP演算法KMP演算法
- KMP演算法 Java實現KMP演算法Java
- LeetCode_0028. 找出字串第一個匹配項的下標,KMP演算法的實現LeetCode字串KMP演算法
- 設計模式——原型模式(C++)——演算法實現設計模式原型C++演算法