注意算法导论中的next[]数组与偏移量的差别
next[]数组(即部分匹配值)的计算
引用:阮一峰的网络日志
从头到尾彻底理解KMP(2014年8月22日版)
偏移数组offset的计算
此处发现阮一峰错误,下次更新纠正
移动位数 = 已匹配的字符数 - 对应的部分匹配值 (算得移动位数为0时,仍移动1位)
对于ABCABCABAC, next[] = {0, 0, 0, 1, 2, 3, 4, 0, 1, 2}
offset[] = …ABCDABD
next[] = {0, 0, 0, 0, 1, 2, 0}
offset[] = {1, 1, 2, 3, 3, 3, 6}
{1, 1, 2, 3, 3, 3, 6}按博主做法是ABCDABD的移动量(即相减算得)
但是对于ABCDABD, 应为