KMP kmp模板

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KMP kmp模板相关的知识,希望对你有一定的参考价值。

直接贴代码好了

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<algorithm>
 5 using namespace std;
 6 int next[10010];
 7 char a[10010],b[10010];
 8 
 9 int main(){
10     scanf("%s%s",a+1,b+1);
11     int lenb=strlen(b+1);
12     int j=0;
13     for(int i=2;i<=lenb;i++){//从2开始!!! 
14         while(j&&b[j+1]!=b[i]) j=next[j];
15         j+=(b[j+1]==b[i]);
16         next[i]=j;
17     }
18     int lena=strlen(a+1);
19     j=0;
20     for(int i=1;i<=lena;i++){
21         while(j&&a[i]!=b[j+1]) j=next[j];
22         j+=(a[i]==b[j+1]);
23         if(j==lenb) printf("%d\n",i-lenb+1);    
24     }
25     for(int i=1;i<=lenb;i++) printf("%d ",next[i]);
26     return 0;
27 }

 

以上是关于KMP kmp模板的主要内容,如果未能解决你的问题,请参考以下文章

KMP字符串匹配模板代码

KMP入门 博客推荐+模板+入门习题

模板——kmp

KMP模板

KMP算法模板

模板KMP