迷惑代码70分球条
查看原帖
迷惑代码70分球条
760776
zzy_zzy楼主2023/11/25 13:13

RT. #1#2#3WA

#include<bits/stdc++.h>
using namespace std;
struct KMP{
	int Next[1000010];
	void search(string s){
		s=" "+s;
		int zzy=0;
		int ks=s.size();
		for(int i=2;i<ks;i++){
			while(zzy&&s[zzy+1]!=s[i])zzy=Next[zzy];
			if(s[zzy+1]==s[i])zzy++;
			Next[i]=zzy;
		}
	}
	void print(string s,string b){
        int ks=s.size(),kb=b.size();
		s=" "+s;
		b=" "+b;
		int j=0;
		for(int i=1;i<=ks;i++){
			while(j&&b[j+1]!=s[i]){
				j=Next[j];
			}
			if(b[j+1]==s[i]){
				j++;
			}
			if(j==kb){
				cout<<i-kb+1<<endl;
			}
		}
		for(int i=1;i<=kb;i++){
			cout<<Next[i]<<" ";
		}
	}
};

int main(){
    KMP kmp;
	string a,b;
	cin>>a>>b;
	kmp.search(b);
	kmp.print(a,b);
	return 0;
}
2023/11/25 13:13
加载中...