KMP模式匹配 二(串)

来源:互联网 发布:淘宝货源供应商怎么找 编辑:程序博客网 时间:2024/06/05 00:42
原文请访问我的博客:xiaoshig.sinaapp.com
KMP模式匹配 二(串)

Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu
Submit Status

Description

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

Input

输入一个主串和一个子串

Output

匹配的趟数

Sample Input

ababcabcacbababcac

Sample Output

3
#include<iostream>#include<cstring>using namespace std;int a[100000];char c[10000];char b[100000];int main(){int j,n,i,k;cin>>c;cin>>b;a[0]=-1;j=-1;i=0;while(b[i]!='\0'){if(j==-1||b[j]==b[i]){j++;i++;//if(b[i]!=b[j])a[i]=j;//else//{if(a[j]==-1)//a[i]=0;//else//a[i]=a[j];}}else j=a[j];}i=0;j=0;k=0;n=1;while(c[i]!='\0'){if(c[i]==b[j]){i++;j++;if(b[j]=='\0'){k=1;break;}}else if(a[j]==-1){i++;j=0;n++;}else {j=a[j];n++;}}if(k==0)cout<<-1<<endl;else cout<<n<<endl;return 0;}


1 0
原创粉丝点击