KMP模式匹配 二

来源:互联网 发布:淘宝怎么直接联系客服 编辑:程序博客网 时间:2024/05/16 07:45
KMP模式匹配 二(串)Time Limit:1000MS    Memory Limit:131072KB    64bit IO Format:%lld & %llu
SubmitStatus

Description

输入一个主串和一个子串,用KMP进行匹配,问进行几趟匹配才成功,若没成功,则输出0

Input

输入一个主串和一个子串

Output

匹配的趟数

Sample Input

ababcabcacbababcac

Sample Output

3
#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 1000005int next[N],len1,len2,ans;char s1[N],s2[N];void getnext(){    int k,j;    len1=strlen(s1);    next[0]=-1;    j=0;    k=-1;    while(j<len1){        if(k==-1||s1[k]==s1[j]){            k++;            j++;            next[j]=k;        }        else            k=next[k];    }    return ;}int kmp(){    int j,k;    len2=strlen(s2);    j=k=0;    getnext();    while(j<len2&&k<len1){        if(k==-1||s2[j]==s1[k]){            j++;            k++;        }        else          {k=next[k];ans++;}        if(k==len1)        {return ans;}    }      if(k!=len1)  ans=0;    return ans;}int main(){    int i,j,k;        ans=1;        scanf("%s%s",s2,s1);        kmp();        printf("%d\n",ans);    return 0;}

0 0
原创粉丝点击