WA#5#6#8 求调
查看原帖
WA#5#6#8 求调
1121518
StarsIntoSea楼主2023/12/2 09:46
#include<cstdio>
#include<cstring>
const int N=1e6+10; 
int next[N],len1,len2;
char str1[N],str2[N];
void do_next(){
	next[0]=0;
	int i=1,len=0;
	while(i<len2){
		if(str2[i]==str2[len])
			next[i++]=++len;
		else{
			if(len>0)
				len=next[len-1];
			else
				next[i++]=len;
		}
	}
}
signed main(){
	scanf("%s%s",str1,str2);
	len1=strlen(str1);
	len2=strlen(str2);
	do_next();
	printf("%d %d\n",len1,len2);
	for(int i=0;i<len1;++i){
		int f=-1;
		for(int t=0;t<len2;++t)
			if(str2[t]!=str1[i+t]){
				f=t;break;
			}
		if(f==-1) printf("%d\n",i+1);
		else if(f==0) continue;
		else i+=next[f-1];
	}
	for(int i=0;i<len2;++i) printf("%d ",next[i]);
}
2023/12/2 09:46
加载中...