码迷,mamicode.com
首页 > 编程语言 > 详细

KMP算法

时间:2016-01-20 22:23:56      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

这里放一个模板,话说c++抽掉后我调了好久

 1 #include<cstdio>
 2 #include<string>
 3 #include<iostream>
 4 using namespace std;
 5 int p[101];
 6 int main(){
 7     string a,b;
 8     cin>>a>>b;
 9     int n=a.length(),m=b.length();
10     a=" "+a;b=" "+b;
11     int j=0;
12     for(int i=2;i<=m;i++){
13             while(j>0&&b[j+1]!=b[i])j=p[j];
14             if(b[j+1]==b[i])j++;
15             p[i]=j;
16             }
17     j=0;
18     for(int i=1;i<=n;i++){    
19             while((j>0)&&(b[j+1]!=a[i]))
20             j=p[j];
21             if (b[j+1]==a[i])j++;
22             if (j==m) {printf("%d",i-m+1);break;}
23             }
24     return 0;
25 }

 

KMP算法

标签:

原文地址:http://www.cnblogs.com/wuminyan/p/5146723.html

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