那个求p串的next数组 这个版本是下标从1开始的字符串,如果从0开始的话,可以在前面加空字符,然后p.size或者s.size的地方-1即可。
nex[1]=0
for(int i=2,j=0;i<=p.size();i++)
{
if(j&&p[i]!=p[j+1])j=nex[j];
if(p[i]==p[j+1])j++;
nex[i]=j;
}
kmp函数
for(int i=1,j=0;i<=s.size();i++)
{
if(j&&s[i]!=p[j+1])j=nex[j];
if(s[i]==p[j+1])j++;
if(j==p.size())
{
那么此时在s串中模式串p的起始下标就是i-p.size()+1.
返回即可。
}
}
标签:&&,int,++,关于,nex,kmp,模板,size From: https://www.cnblogs.com/NiShu7777/p/17875785.html