next数组规则如下:
注意,下标j从1开始,到最后一个字符结束(当然也可以是0,只要所有的值都减1即可)
n
e
x
t
[
j
]
=
{
m
a
x
(
k
)
∣
1
<
k
<
j
,
p
1
.
.
.
p
k
−
1
=
p
j
−
k
+
1
.
.
.
p
j
−
1
}
。
其中
0
<
p
1
≤
p
k
−
1
,
0
<
p
j
−
k
+
1
≤
p
j
−
1
。
next[j] = \{max(k) \quad | 1
比如字符串"abaabcac"的next数组为:111223121
至于改进的next数组,情况将会更加复杂,暂不赘述。
卡特兰数:
C 2 n n n + 1 \frac{C_{2n}^{n}}{n+1} n+1C2nn