码迷,mamicode.com
首页 > 其他好文 > 详细

KMP kmp模板

时间:2017-05-01 01:21:14      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:blog   模板   ++   cstring   scanf   bsp   while   names   nbsp   

直接贴代码好了

 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模板

标签:blog   模板   ++   cstring   scanf   bsp   while   names   nbsp   

原文地址:http://www.cnblogs.com/sdfzxh/p/6790789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!