sub2极限TLE
查看原帖
sub2极限TLE
1111300
ayszYW楼主2024/1/25 19:05
#include<bits/stdc++.h>
using namespace std;

char s1[1000005],s2[1000005];
int next1[1000005],ans=0,len1,len2;
void qzhz(){
	
}


int main(){
	cin>>s1+1>>s2+1;
	len1=strlen(s1+1),len2=strlen(s2+1);
	int i=1,j=0;
	next1[1]=0;
	//cout<<len2;
	while(i<=len2){
		if(j==0||s2[i]==s2[j]){
			i++;
			j++;
			next1[i]=j;
			//cout<<i<<' '<<j<<" ";
		}
		else{
			j=next1[j];
		}
	}
	//for(int i=1;i<=s2.length()+1;i++)cout<<next1[i]<<" ";
	for(int i=1;i<=len1;i++){
		//cout<<"i="<<i<<" ";
		int j=1;
		if(s1[i]==s2[j]){
			for(j;j<=len2;){
				if(s1[i]!=s2[j])break;
				j++,i++;
			}
			if(j==len2+1)cout<<i-j+1<<endl;
			i-=next1[j];
		}
			
	}
	for(int i=2;i<=len2+1;i++){
		cout<<next1[i]-1<<" ";
	}
	
} 

sub2两个点一个1.10s,一个1.01sTLE 求改

2024/1/25 19:05
加载中...