(模板)KMP
树下
2018-10-14 16:34:52
```
void getfail(){
KMP[0]=KMP[1]=0;
for(int i=1;i<lenb;i++){
int j=KMP[i];
while(j&&b[i]!=b[j])
j=KMP[j];
if(b[i]==b[j])
KMP[i+1]=j+1;
else
KMP[i+1]=0;
}
}
void find(){
int j=0;
for(int i=0;i<lena;i++){
while(j&&b[j]!=a[i])
j=KMP[j];
if(b[j]==a[i])
j++;
if(j==lenb)
printf("%d\n",i-lenb+2);
}
}
```