复习KMP
2017-02-28 16:30
309 查看
2017.4.7:
看了好几遍的kmp,又忘了。。。
这次的理解:求next数组,求模式串的对称性(前缀和后缀的最大公共长度),next[i]表示模式串mo[1--i]这个子串的前缀和后缀的最大公共长度。
给这个月凑够20篇博客,手撸以便KMP,也当作温习一下。
看了好几遍的kmp,又忘了。。。
这次的理解:求next数组,求模式串的对称性(前缀和后缀的最大公共长度),next[i]表示模式串mo[1--i]这个子串的前缀和后缀的最大公共长度。
给这个月凑够20篇博客,手撸以便KMP,也当作温习一下。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; char N[1005],M[1005],lenN,lenM; int next[1005]; void getNext() { int p=0; for(int i=2;i<=lenM;i++) { while(p>0&&M[p+1]!=M[i]) p=next[p]; if(M[p+1]==M[i]) p++; next[i]=p; } } bool KMP() { getNext(); cout<<"*"<<endl; int p=0; for(int i=1;i<=lenN;i++) { while(p>0&&M[p+1]!=N[i]) p=next[p]; if(M[p+1]==N[i]) p++; if(p==lenM) return 1; } return 0; } int main() { scanf("%s%s",N+1,M+1); lenN=strlen(N+1); lenM=strlen(M+1); cout<<KMP()<<endl; for(int i=1;i<=lenM;i++) cout<<next[i]<<" "; cout<<endl; return 0; }
相关文章推荐
- KMP复习小结
- [复习]KMP 删除子串
- 数据结构与算法复习(20)—— KMP 与字符串算法及其扩展
- 【各种算法】【kmp】复习
- 扩展KMP复习小记
- hdu2087剪花布条+hdu3746Cyclic Nacklace 【kmp复习】
- kmp复习
- 复习 KMP 算法
- KMP 复习 再续~~
- KMP复习 找字符串
- KMP复习整理
- KMP复习小结
- KMP匹配算法复习。。
- [复习]KMP 字符串匹配
- sgu275 To xor or not to xor ----高斯消元复习
- poj 2406 Power Strings (KMP)
- 计量经济学复习笔记(七)
- HDU - 1686 KMP裸题
- ARM嵌入式复习
- ATL Internals 2ed复习.chapter 5.COM Server review