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

KMP笔记

时间:2018-04-25 15:54:01      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:int   color   break   clu   pre   char   \n   div   span   

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笔记

标签:int   color   break   clu   pre   char   \n   div   span   

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

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