扩展 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;
}
本文作者:luckydrawbox
本文链接:https://www.cnblogs.com/luckydrawbox/p/18526498
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步