KMP 模板 hdu 2087

来源:互联网 发布:网络泛在化 编辑:程序博客网 时间:2024/05/22 14:38
#include <iostream> #include <cstring>#include <cstdio>using namespace std; #define LL long long char s[1005];char zc[1005];int nex[1005];void get_next(char *s,int len){    int i,j;    j=-1;    i=0;    nex[0]=-1;    while(i<len)    {        if(j==-1||s[i]==s[j])        {            i++;            j++;            nex[i]=j;        }        else            j=nex[j];    }}int KMP(char *s,int len1,char *zc,int len2){    int i,j;    int ans=0;    get_next(zc,len2);    i=0;    j=0;    while(i<len1)    {        if(j==-1||s[i]==zc[j])        {            i++;            j++;        }        else            j=nex[j];        if(j>=len2)        {            ans++;            j=0;        }    }    return ans;}int main(){    while(cin>>s)    {        if(s[0]=='#')            break;        cin>>zc;        int res=KMP(s,strlen(s),zc,strlen(zc));        cout << res << endl;    }    return 0;}

原创粉丝点击