KMP70分sub2全TLE,求调
查看原帖
KMP70分sub2全TLE,求调
366840
red_L楼主2023/8/8 17:58

rt,虽说下了数据本地的确不对,但是没看出代码有什么问题

#include <iostream>
#include <cstring>
using namespace std;

const int N=1000010;
char a[N],b[N];
int j,nex[N];
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>a+1>>b+1;
	int n=strlen(b+1);
	for(int i=2;i<=n;i++)
	{
		while(j&&b[i]!=b[j+1]) j=nex[j];
		if(b[j+1]==b[i]) j++;
		nex[i]=j;
	}
	j=0;
	for(int i=1;i<=strlen(a+1);i++)
	{
		while(j&&a[i]!=b[j+1]) j=nex[j];
		if(b[j+1]==a[i]) j++;
		if(j==n)
		{
			cout<<i-n+1<<"\n";
			j=nex[j];
		}
	}
	for(int i=1;i<=n;i++) cout<<nex[i]<<" ";
	return 0;
}
2023/8/8 17:58
加载中...