最后一个组最后两个测试点WA了。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
string s,t;
int nxt[100000000],cnt=0,w[100000000];
void kmp_next(){
int j=0;
for(int i=1 ; i<t.size() ; i++){
while(j>0 && t[i]!=t[j]) j=nxt[j-1];
if(t[i]==t[j]) j++;
nxt[i]=j;
}
}
void kmp(){
int j=0;
for(int i=0 ; i<s.size() ; i++){
if(j>0 && s[i]!=t[j]) j=nxt[j-1];
if(s[i]==t[j]) j++;
if(j==t.size()){
w[cnt]=i-t.size()+1;
cnt++;
}
}
}
int main() {
cin>>s>>t;
kmp_next();
kmp();
for(int i=0 ; i<cnt ; i++){
cout<<w[i]+1<<endl;
}
for(int i=0 ; i<t.size() ; i++){
cout<<nxt[i]<<" ";
}
return 0;
}