100分Subtask #3 T了求调
查看原帖
100分Subtask #3 T了求调
1435772
Leehy楼主2025/7/21 11:46
#include<bits/stdc++.h>
const int N=1e6+7;
int fail[N];
char qs[N],ins[N];
using namespace std;
int main(){
	scanf("%s%s",ins+1,qs+1);
	for(int i=2,f=0;qs[i];i++){
		while(f&&qs[i]!=qs[f+1])f=fail[f];
		if(qs[i]==qs[f+1])fail[i]=++f;
	}
	for(int i=1,p=0;ins[i];i++){
		while(p&&qs[p+1]!=ins[i])p=fail[p];
		if(ins[i]==qs[p+1])p++;
		if(p==strlen(qs+1))printf("%d\n",i-strlen(qs+1)+1);
	}
	for(int i=1;i<=strlen(qs+1);i++)printf("%d ",fail[i]);
	return 0;
}
2025/7/21 11:46
加载中...