KMP算法分析
2.next数组求法
操作见课件,这里不赘述
1. s [ i ] ≠ s [ j ] s[i] \neq s[j] s[i]=s[j]
则
s
[
i
]
s[i]
s[i] 和
s
[
j
]
s[j]
s[j] 无法匹配,所以我们一定无法选择
s
[
j
]
s[j]
s[j] 且
n
e
x
t
[
i
]
=
1
next[i] = 1
next[i]=1, 所以最长公共前后缀长度为:一段包含
s
[
i
]
s[i]
s[i]的区间和一段不包含
s
[
j
]
s[j]
s[j]的区间,且两区间相同,
n
e
x
t
[
j
]
next[j]
next[j]表示先将不包含
s
[
i
]
s[i]
s[i]的区间匹配,在去暴力的判断能不能再加上一个字符
s
[
i
]
s[i]
s[i]
2. s [ i ] = = s [ j ] s[i] == s[j] s[i]==s[j]
则最长公共前后缀可以向后延展一位,所以直接 i i i++; j j j++;