#include<bits/stdc++.h>
using namespace std;
int b[1000005];
int main(){
string s,t;
b[0]=0;
cin>>t>>s;
int s1,t1;
s1=s.size();
t1=t.size();
for(int i=1,j=0;i<s1;i++){
while(j&&s[j]!=s[i]){
j=b[j];
}
if(s[j]==s[i]){
++j;
}
b[i]=j;
}
for(int i=0,j=0;i<t1;i++){
while(j>0&&s[j]!=t[i]){
j=b[j];
}
if(s[j]==t[i]){
j++;
}
if(j==s1){
printf("%d\n",i-s1+2);
j=b[j-1];
}
}
for(int i=0;i<s.size();i++){
cout<<b[i]<<" ";
}
}
提交情况惨不忍(有T有WA),不过样例过了,大佬帮忙看一下