参考博客https://zhuanlan.zhihu.com/p/83334559
next数组的预处理
void pre()
{
p[1]=0;
int j=0;
for(int i = 1;i < len;i++)
{
while(j>0&&B[i+1]!=B[j+1]){
j=p[j];
}
if(B[j+1]==B[i+1])
j++;
p[i+1]=j;
}
}
search函数
int search()
{
int j=0;
for(int i = 0;i < n;i++)
{
while(j > 0&&A[i+1]!=B[j+1])j=p[j];
if(A[i+1]==B[j+1])j++;
if(j==m)
{
//j=p[j];//继续寻找匹配
return i-m;//返回字串在原串中首字母的位置s
}
}
}