有的对,有的错救助
查看原帖
有的对,有的错救助
539488
terabyte_connection楼主2024/7/20 15:18
#include<bits/stdc++.h>
using namespace 
typedef long long ll;
string a,b;
const int MAXN = 1e6+10;
int nxt[MAXN];
int main(){
	cin>>a>>b;
	int n = a.size();
	int m = b.size();
	for(int i=1,max_len=0;i<m;i++){
		if(b[i]==b[max_len])max_len++,nxt[i]=max_len;
		else if(max_len != 0)max_len == nxt[max_len-1];
	}
	for(int i=0,j=0;i<n;){ 
		if(a[i]==b[j])i++,j++;
		else if(j>0)j=nxt[j-1];
		else i++;
		if(j == m)cout<<i-m+1<<endl;
	}
	for(int i=0;i<m;i++)cout<<nxt[i]<<' ';
	return 0;
}

2024/7/20 15:18
加载中...