我們先來看兩個next
數組的例子
j |
1 |
2 |
3 |
4 |
5 |
6 |
---|---|---|---|---|---|---|
模式串 | a | b | c | d | e | x |
next[j ] |
0 | 1 | 1 | 1 | 1 | 1 |
j |
1 |
2 |
3 |
4 |
5 |
6 |
---|---|---|---|---|---|---|
模式串 | a | b | c | a | b | x |
next[j ] |
0 | 1 | 1 | 1 | 2 | 3 |
next[1]=0
,next[1]=1
j
逐步遞增,在由j
前面的字符組成的子串中進行查找,計算next[j]
的規則爲:子串中最大對稱相等的字符個數+1
即:
PS:關於nextval數組
的求解,可以參考nextval數組如何求解
我們以示例2中的例子進行講解
next[2]=1
next[3]=1
next[4]=1
next[5]=1+1=2
next[6]=2+1=3
概括來說,求解next
數組的方法爲:
在由長度爲j-1
的子字符串中從以下兩個方向找最長的相等字符,next
數組的值爲最長的字符數+1