国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > php教程 > KMP(二)

KMP(二)

来源:程序员人生   发布时间:2015-05-21 08:35:09 阅读次数:2202次
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int main() { char a[10050],s[1000007]; int c;scanf("%d",&c); while(c--) { scanf("%s%s",a,s); int next[10007]={}; int i=0,j=-1; next[0]=-1; int len=strlen(a); while(i<len) { if(j==-1 || a[i]==a[j]) next[++i]=++j;//先++,后赋值 else j=next[j]; } int ans=0; i=j=0; int n=len; len=strlen(s); while(i<len) { if(j==-1 || s[i]==a[j]) { ++i;++j; } else { j=next[j]; } if(j==n) ans++; } printf("%d ",ans); } return 0; }
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生