0
点赞
收藏
分享

微信扫一扫

【KMP】next数组理解

单调先生 2022-01-15 阅读 50
c++

生成next数组时,k=next[k],理解:

while(k!=-1 && s[k+1] != s[i])
	k = next[k];

当前公共前后缀无法继续延伸了,回溯一步,或者说收缩到上一个较短的公共前后缀位置, 继续尝试延伸(尝试匹配).具体讲,前缀串的右边界往左收缩,意味着后缀串的左边界往右收缩.收缩到哪个位置呢?当前公共前后缀的位置是k,根据next数组的定义,上一个较短的公共前后缀位置就是next[k]

举报

相关推荐

0 条评论