rt,别的点都过了就#3不过,为了找出错误在哪里我甚至把自己的代码和第一篇题解仔细对了一遍,然后还是寄
code:
#include <bits/stdc++.h>
using namespace std;
char a[1000005],b[1000005];
int stk[1000005]={0},nxt[100005]={0},f[1000005]={0},t=0;
int lena=0,lenb=0;
void fnxt(){
nxt[1]=0;
int j=0;
for(int i=2;i<=lenb;i++){
while(j>0&&b[i]!=b[j+1])
j=nxt[j];
if(b[i]==b[j+1])
j++;
nxt[i]=j;
}
}
int main(){
cin>>a+1;
cin>>b+1;
lena=strlen(a+1);
lenb=strlen(b+1);
fnxt();
int j=0;
for(int i=1;i<=lena;i++){
while(j>0&&(a[i]!=b[j+1])) j=nxt[j];
if(a[i]==b[j+1]) j++;
f[i]=j;
stk[++t]=i;
if(j==lenb){
t-=lenb;
j=f[stk[t]];
}
}
for(int i=1;i<=t;i++){
printf("%c",a[stk[i]]);
}
return 0;
}