70TLE
查看原帖
70TLE
169736
Fu_Tao楼主2022/1/18 14:43
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cmath>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
using namespace std;
typedef long long ll;
ll a[1000001],ne[1000001],l1,l2;
string s1,s2;
void p(){
	ll i=0,j=0;
	while(i<l1&&j<l2){
		if(j==-1||(s1[i]==s2[j]))i++,j++;
		else j=ne[j];
		if(j==l2){
			//cout<<i<<" "<<j<<" ";
			cout<<i-j+1<<endl;
			i=i-j+1;
			j=0;
		}
	}
	return ;
}
int main(){
	cin>>s1>>s2;
	l1=s1.size();
	l2=s2.size();
	ne[0]=-1;
	ll i=0,j=-1;
	while(i<l2){
		if(j==-1||s2[i]==s2[j]){
			i++;j++;
			ne[i]=j;
		}
		else j=ne[j];
	}
	if(s1==s2){
		cout<<1<<endl;
	}
	else p();
	for(int i=1;i<=l2;i++){
		cout<<ne[i]<<" ";
	}
	return 0;
}

11和13TLE

2022/1/18 14:43
加载中...