KMP算法
1、next[ ] 数组
next [ j ]=s 的最长相等前后缀长度加 1
next[1]=0 (规定) next[2]=1
KMP平均时间复杂度为O(n+m)
2、nextval[ ] 数组
nextval数组就是在next数组的基础上,把回溯的一步一步的中间步骤省略,直接写出最终要移动的位置。(因为根据next数组值找到上一个跳转位置的时候,这个位置也有一个对应的next数组值,因此有可能不是最终位置,还要根据这个位置的next数组往回找)。
具体的方法:用 i 所对应的next [ i ] 所指的关键字与 i 所指的关键字进行比较。
如果不同,则nextval [ i ] = next [ i ]
如果相同,则nextval [ i ]用next [ i ] 所指的上一个位置所对应的nextval [ next [ i ] ] 来代替,从而达到优化的目的。
3、例题:
已知模式串T=‘abababcabc’ ,则next函数值及nextval函数值为?
本文作者:oaoa
本文链接:https://www.cnblogs.com/oaoa/p/13976020.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步