刚学kmp,代码写得有点难看烂得跟坨屎一样
TLE
#include<bits/stdc++.h>
using namespace std;
#define next nexts
#define N 10000005
char s[N],p[N];
int next[N];
signed main()
{
scanf("%s%s",s+1,p+1);
for(int i=2,j=1;i<=strlen(p+1);++i)
{
while(j>1&&p[i]!=p[j])
j=next[j-1]+1;
if(p[i]==p[j])
++j;
next[i]=j-1;
}
for(int i=1,j=1;i<=strlen(s+1);++i)
{
while(j>1&&s[i]!=p[j])
j=next[j-1]+1;
if(s[i]==p[j])
++j;
if(j-1==strlen(p+1))
printf("%d\n",i-j+2);
}
for(int i=1;i<=strlen(p+1);++i)
printf("%d ",next[i]);
return 0;
}