Next函数返回匹配字符串中当前位置 j (j=1,2,3...)前面的子字符串中,最长前后缀长度+1(j=1时,定义为0)
KMP算法中,j = next(j),在i不变的情况下,直接丢弃了匹配字符串中的最长前缀,从next(j)位置与i位置继续比较。
=============================================(例)
设一段字符串ABXYAB*****,当匹配到ABXYAB之后出错。
源字符串 *****ABXYABm****
匹配字符串 ABXYABn****
此时,i == j == 7,S[i] == 'm'。
然后,j = next[7] = 3。
直接用S[7]与P[3]继续比较,丢弃匹配字符串子串Pj的最长前缀。
源字符串 *****ABXYABm****
匹配字符串 ABXYABn*****
实际比较的是:
源字符串 m****
匹配字符串 XYABn*****