70分急求调
查看原帖
70分急求调
964645
pies_0x楼主2024/5/4 14:38

刚学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;
}
2024/5/4 14:38
加载中...