luogu_3375 模板KMP字符串匹配

Posted Code_Together

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu_3375 模板KMP字符串匹配相关的知识,希望对你有一定的参考价值。

#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字符串匹配的主要内容,如果未能解决你的问题,请参考以下文章

Luogu P3375 模板KMP字符串匹配

luogu3375 模板KMP字符串匹配

Luogu-P3375 模板KMP字符串匹配

luogu 3375模板KMP字符串匹配

P3375 模板 KMP字符串匹配

洛谷—— P3375 模板KMP字符串匹配