KMP算法
Posted 最爱小崔同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KMP算法相关的知识,希望对你有一定的参考价值。
//KMP算法
#include<iostream>
using namespace std;
const int N=10010,M=10010;
int n,m;
char p[N],s[M];
int ne[N];
int main()
cin>>n>>p+1>>m>>s+1;
//next[] 数组
for(int i=2,j=0;i<=n;i++)
while(j&&p[i]!=p[j+1]) j=ne[j];
if(p[i]==p[j+1]) j++;
ne[i]=j;
//通过Next数组快速匹配
for(int i=1,j=0;i<=m;i++)
while(j&&s[i]!=p[j+1]) j=ne[j];
if(s[i]==p[j+1]) j++;
if(j==n)
printf("%d",i-n);
j=ne[j];
return 0;
//由于我也不是很会,就只能给大家分享一下代码,抱歉抱歉嘿嘿。我只是明白,能写出来讲不出来。。。。
以上是关于KMP算法的主要内容,如果未能解决你的问题,请参考以下文章