最后三个WA,求助
查看原帖
最后三个WA,求助
513069
wild_pointer楼主2022/3/11 00:01
#include<bits/stdc++.h>
using namespace std;
const int N=1000010;
char s1[N],s2[N],ne[N];
int main()
{
	cin>>s1+1>>s2+1;
	int n=strlen(s2+1),m=strlen(s1+1);
	for(int i=2,j=0;i<=n;i++){
		while(j&&s2[j+1]!=s2[i]) j=ne[j];
		if(s2[i]==s2[j+1]) j++;
		ne[i]=j;
	}
	if(n<=m) for(int i=1,j=0;i<=m;i++){
		while(j&&s1[i]!=s2[j+1]) j=ne[j];
		if(s1[i]==s2[j+1]) j++;
		if(j==n){
			printf("%d\n",i-n+1);
			j=ne[j];
		}
	}
	cout<<0<<" ";
	for(int i=2;i<=n;i++){
		printf("%d ",ne[i]);
	}
	return 0;
}
2022/3/11 00:01
加载中...