首页 > 其他 > 详细

luogu_3375 【模板】KMP字符串匹配

时间:2017-07-01 09:39:44      阅读:243      评论:0      收藏:0      [点我收藏+]

#include<bits/stdc++.h>

using namespace std;

int f[1000010],n,m;

char p[1000010],t[1000010];

void getfail(){

f[0]=f[1]=0;

for(int i=1;i<m;i++){

int j=f[i];

while(j && p[i]!=p[j])j=f[j];

f[i+1]=p[i]==p[j]?j+1:0;

}

}

void find(){

getfail();

int j=0;

for(int i=0;i<n;i++){

while(j && t[i]!=p[j])j=f[j];

if(t[i]==p[j])j++;

if(j==m)printf("%d\n",i-m+2);

}

}

int main(){

scanf("%s%s",&t,&p);

n=strlen(t); m=strlen(p);

find();

for(int i=1;i<=m;i++)printf("%d ",f[i]);

puts("");

return0;

}

luogu_3375 【模板】KMP字符串匹配

原文:http://www.cnblogs.com/codetogether/p/7101233.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!