求调
查看原帖
求调
1127126
yueyan_WZF楼主2024/5/5 10:31
#include<bits/stdc++.h>
using namespace std;
int b[1000005];
int main(){
	string s,t;
	b[0]=0;	
	cin>>t>>s;
	int s1,t1;
	s1=s.size();
	t1=t.size();
	for(int i=1,j=0;i<s1;i++){
		while(j&&s[j]!=s[i]){
			j=b[j];
		}
		if(s[j]==s[i]){
			++j;
		}
		b[i]=j;
	}
	for(int i=0,j=0;i<t1;i++){
		while(j>0&&s[j]!=t[i]){
			j=b[j];
		}	
	
		if(s[j]==t[i]){
			j++;
		}
		//cout<<j<<" "<<i<<endl;
		if(j==s1){
			printf("%d\n",i-s1+2);
			j=b[j-1];
		//cout<<j;
		}
	}
	for(int i=0;i<s.size();i++){
		cout<<b[i]<<" ";
	}
	
}

提交情况惨不忍(有T有WA),不过样例过了,大佬帮忙看一下

2024/5/5 10:31
加载中...