*KMP

来源:互联网 发布:java构造方法重载要素 编辑:程序博客网 时间:2024/06/08 13:05
今天是2017/5/22,DCDCBigBig的第五篇博文

啊。。。最近真是太忙了,又要腐败(划掉)又要复习期末考,就先集体把代码发上来,顺便把诗念完。看博客的童鞋请注意,表*的博文就代表只有代码,没有思想。思想什么的等暑假在一起写吧。。。

KMP

#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;int len,len1,next[100001];char st[10000],st1[10000];bool fid;int main(){    fid=false;    scanf("%s",st);    scanf("%s",st1);    memset(next,0,sizeof(next));    next[0]=-1;    len=strlen(st);    len1=strlen(st1);    for(int i=1,j=0;i<len;i++){        for(j=next[i-1];j!=-1&&st[j+1]!=st[i];j=next[j]);        if(st[j+1]==st[i])j++;        next[i]=j;    }    for(int i=0,j=-1;i<len1;i++){        for(;j!=-1&&st[j+1]!=st1[i];j=next[j]);        if(st[j+1]==st1[i])j++;        if(j==len-1){            printf("YES\n");            fid=true;            break;        }    }    if(!fid){        printf("NO\n");    }    return 0;}