首页 > 代码库 > KMP kmp模板
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模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。