关于KMP算法中, if P[k] != P[j], k = next[k]的解释。 简易描述: 当 P[k] != P[j] 时,为了寻找最大前后缀长度,前缀最后一位必须前移,后缀第一位必须后移,直到前缀等于后缀。而这个前缀最后一位前移最合适的值就是 next[k] - 1,对应蓝色部分长度。四个蓝色部分相互相等的,红色部分也是相互相等的。 最后 P[k] 与 P[j] 的比较也就变成了 P[next[k]] 与 P[j] 的比较了。