70分,T掉了为啥。。
查看原帖
70分,T掉了为啥。。
1420936
Sparkle_ovo楼主2024/12/21 00:30
//owo
#include <bits/stdc++.h>
//#include<queue>
#define ll long long
using namespace std;
const int N=1e7+10;

int main() {
	char a[N>>1],b[N];
	int pre[N];
//	memset(pre,0,sizeof(pre));
//	vector<int> pre;
	scanf("%s",a);
	scanf("%s",b);
//	strcpy(b2,b);
	int l=strlen(b);
	b[strlen(b)]='$';
	strcat(b,a);
	for(int i=1;i<strlen(b);i++){
		int len=pre[i-1];
		while(len!=0&&b[len]!=b[i]){
			len=pre[len-1];
		}
		if(b[len]==b[i])
		pre[i]=len+1;
		if(pre[i]==l){
			printf("%d\n",i-l-l+1);
		}
	}
	for(int i=0;i<l;i++){
		printf("%d ",pre[i]);
	}
	return 0;
}

//sizeof(sum)/sizeof(int)
2024/12/21 00:30
加载中...