字符串匹配-KMP算法
2017-10-16 15:33
323 查看
#include<iostream> #include<string> #include<cstdio> #include<cstring> using namespace std; const int MAXL=1e6+10; char s[MAXL+50],t[MAXL+50];//s为目标串,t为模式串 int Next[MAXL+50]; void Getnext() { int i=0,j=-1; Next[0]=-1; int len=strlen(t); while(i<len) { if(j==-1||t[i]==t[j]) { Next[++i]=++j; if(t[i]==t[j]) Next[i]=Next[j]; } else j=Next[j]; } } int index_KMP() { int i=0,j=0; int len1=strlen(s),len2=strlen(t); while(i<len1&&j<len2) { if(j==-1||s[i]==t[j]) { i++;j++; } else { j=Next[j]; } } if(j>=len2) return i-len2; else return -1; } int main() { int i; while(~scanf("%s",s)) { scanf("%s",t); memset(Next,0,sizeof(0)); Getnext();//求Next数组的值 int sub=index_KMP();//判断是否匹配 if(sub==-1) cout<<"不匹配"<<endl; else cout<<sub<<endl; } }
相关文章推荐
- LeetCode Implement strStr()(朴素的字符串匹配,RK算法,KMP算法)
- 字符串匹配之KMP算法
- 字符串匹配KMP算法的理解(详细)
- 字符串匹配:KMP算法, Boyer-Moore算法理解与总结
- 字符串匹配的KMP算法
- 字符串匹配KMP算法
- 字符串匹配的KMP算法
- 字符串匹配 KMP算法
- 字符串匹配的KMP算法和Boyer-Moore算法
- 字符串匹配的KMP算法
- 字符串匹配KMP算法
- 字符串匹配KMP算法中Next[]数组和Nextval[]数组求法
- 字符串匹配的KMP算法
- 字符串匹配的KMP算法
- 字符串匹配-KMP算法
- 字符串匹配,KMP算法
- 字符串匹配——KMP算法
- 字符串匹配算法——KMP算法
- 字符串匹配的KMP算法
- 字符串匹配的KMP算法