生成next数组时,k=next[k],理解:
while(k!=-1 && s[k+1] != s[i])
k = next[k];
当前公共前后缀无法继续延伸了,回溯一步,或者说收缩到上一个较短的公共前后缀位置, 继续尝试延伸(尝试匹配).具体讲,前缀串的右边界往左收缩,意味着后缀串的左边界往右收缩.收缩到哪个位置呢?当前公共前后缀的位置是k,根据next数组的定义,上一个较短的公共前后缀位置就是next[k]
微信扫一扫
生成next数组时,k=next[k],理解:
while(k!=-1 && s[k+1] != s[i])
k = next[k];
当前公共前后缀无法继续延伸了,回溯一步,或者说收缩到上一个较短的公共前后缀位置, 继续尝试延伸(尝试匹配).具体讲,前缀串的右边界往左收缩,意味着后缀串的左边界往右收缩.收缩到哪个位置呢?当前公共前后缀的位置是k,根据next数组的定义,上一个较短的公共前后缀位置就是next[k]
相关推荐