首页 > 其他 > 详细

KMP笔记

时间:2018-04-25 15:41:00      阅读:158      评论:0      收藏:0      [点我收藏+]

KMP

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<cmath>
 5 using namespace std;
 6 int len,len1,next[100001];
 7 char st[10000],st1[10000];
 8 bool fid;
 9 int main(){
10     fid=false;
11     scanf("%s",st);
12     scanf("%s",st1);
13     memset(next,0,sizeof(next));
14     next[0]=-1;
15     len=strlen(st);
16     len1=strlen(st1);
17     for(int i=1,j=0;i<len;i++){
18         for(j=next[i-1];j!=-1&&st[j+1]!=st[i];j=next[j]);
19         if(st[j+1]==st[i])j++;
20         next[i]=j;
21     }
22     for(int i=0,j=-1;i<len1;i++){
23         for(;j!=-1&&st[j+1]!=st1[i];j=next[j]);
24         if(st[j+1]==st1[i])j++;
25         if(j==len-1){
26             printf("YES\n");
27             fid=true;
28             break;
29         }
30     }
31     if(!fid){
32         printf("NO\n");
33     }
34     return 0;
35 }

 

KMP笔记

原文:https://www.cnblogs.com/dcdcbigbig/p/8945105.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!