扩展 KMP(Z 函数)
变量
- : 与 的最长公共前缀的长度。
函数
- :得到字符串 的 函数值。
代码
int z[N];
void getz(string s){
int len=s.size(),l=0;
z[0]=0;
for(int i=1;i<len;i++){
z[i]=0;
if(l+z[l]>i)
z[i]=min(l+z[l]-i,z[i-l]);
while(i+z[i]<len&&s[z[i]]==s[i+z[i]])
z[i]++;
if(i+z[i]>l+z[l])
l=i;
}
z[0]=len;
}

浙公网安备 33010602011771号