第三子任务全部RE,70分代码求调!!
#include <iostream>
#include <string>
using namespace std;
#define N (int(1e6)+7)
string s1, s2;
int nxt[N];
int main(){
cin>>s1>>s2;
int n=s1.size(), m=s2.size();
nxt[0]=0;
for(int i=1, j=0;i<n;i++){
while(j>0 && s2[j]!=s2[i]){
j=nxt[j-1];
}
if(s2[j]==s2[i])
j++;
nxt[i]=j;
}
for(int i=0, j=0;i<n;i++){
while(j>0 && s1[i]!=s2[j]){
j=nxt[j-1];
}
if(s1[i]==s2[j])
j++;
if(j==m)
cout<<i-m+2<<endl;
}
for(int i=0;i<m;i++){
cout<<nxt[i]<<" ";
}
cout<<endl;
return 0;
}
我把测试点8在本地测了,是正确的。