求救
查看原帖
求救
261574
rmzls楼主2022/8/21 18:04

最后一行全tle。。。 求好心人帮忙看看

#include<bits/stdc++.h>
using namespace std;
char a[100001],b[100001];
int nxt[100001];
void gn(){
	//nxt[0]=0;
	for(int i=2,j=0;i<=strlen(b+1);i++){
		while(j>0&&b[i]!=b[j+1]){
			j=nxt[j];
		}
		if(b[i]==b[j+1]){
			j++;
			nxt[i]=j;
		}
//		else{
//			nxt[i]=0;
//		}
	}
}
int main(){
	cin>>a+1;
	cin>>b+1;
	int l=strlen(b+1);
	int l2=strlen(a+1);
	//scanf("%s%s",&a+1,&b+1);
	gn();
	for(int i=1,j=0;i<=strlen(a+1);i++){
		while(j>0&&(a[i]!=b[j+1])){
			j=nxt[j];
		}
		
		if(a[i]==b[j+1]){
			j++;
		}
		//f[i]=j;
		if(j==strlen(b+1)){
			printf("%d\n",i-j+1);
			//ans.push_back();
			j=nxt[j];
		}
	}
//	for(int i=0;i<ans.size();i++){
		//printf("%d\n",ans[i]);
	//}
	for(int i=1;i<=strlen(b+1);i++){
		printf("%d ",nxt[i]);
	}
	return 0;
}
2022/8/21 18:04
加载中...