近几天学习kmp算法,在next数组求解上受苦颇深,看了不少博客,感觉写得都不够清晰,所以想按照自己理解的过程来尝试写一下,也便于以后温习。
关于kmp算法的介绍,网上博文有很多,就不再赘述,推荐一篇kmp算法,个人感觉挺好
这里主要详细讲解next数组的求解。
由于在下不擅作图,有的地方单纯用文字描述不够清晰,还请原谅。
若有什么地方写得不对欢迎批评,以便于在下修正。
kmp算法的精髓就在于next数组,从而达到跳跃式匹配的高效模式。
而next数组的值是代表着字符串的前缀与后缀相同的最大长度,(不能包括自身)。
这里举个例子:
模式串t A B A B A A
下标 0 1 2 3 4 5
next 0 0 1 2 3 1
next[0]代表t[0]~t[0]即"A"的最大前后缀,显然为0.
next[1]代表t[0]~t[1]即"AB"的最大前后缀,为0.
next[2]代表t[0]~

最低0.47元/天 解锁文章
694

被折叠的 条评论
为什么被折叠?



