字符串 b o r d e r border border 的性质:
记
S
k
S_k
Sk 表示
S
1...
k
S_{1...k}
S1...k,为
S
S
S 的一个
b
o
r
d
e
r
border
border
那么这些
b
o
r
d
e
r
border
border 可以划分成不超过
log
2
∣
S
∣
\log_2|S|
log2∣S∣ 段,每一段是
k
k
k 的等差数列
- 引理 1:若存在一个 b o r d e r border border S k S_k Sk 那么 ∣ S ∣ − k |S|-k ∣S∣−k 为字符串的一个周期
- 引理 2:若 p , q p,q p,q 为字符串的周期且 p + q ≤ ∣ S ∣ − g c d ( p , q ) p+q\le|S|-gcd(p,q) p+q≤∣S∣−gcd(p,q),那么 g c d ( p , q ) gcd(p,q) gcd(p,q) 也为字符串的周期
引理 2 证不来,参考 https://zhuanlan.zhihu.com/p/89385360
现在考虑两个长度
≥
∣
S
∣
2
\ge \frac{|S|}{2}
≥2∣S∣ 的
b
o
r
d
e
r
border
border
S
A
,
S
B
S_A,S_B
SA,SB ,其中
S
B
S_B
SB 为最长的
b
o
r
d
e
r
border
border
由
S
B
S_B
SB 为最长
b
o
r
d
e
r
border
border ,我们知道
∣
S
∣
−
B
|S|-B
∣S∣−B 为最小周期,那么
∣
S
∣
−
B
∣
∣
S
∣
−
A
|S|-B||S|-A
∣S∣−B∣∣S∣−A,令
q
=
∣
S
∣
−
B
q=|S|-B
q=∣S∣−B,由
q
q
q 是最小周期知道
∣
S
∣
−
k
q
≥
∣
S
∣
2
|S|-kq\ge \frac{|S|}{2}
∣S∣−kq≥2∣S∣ 都是字符串的
b
o
r
d
e
r
border
border,这里不小于长度一半的限制是将引理 2 弱化成
p
+
q
≤
∣
S
∣
p+q\le |S|
p+q≤∣S∣
那么递归考虑 < ∣ S ∣ 2 <\frac{|S|}{2} <2∣S∣ 的 b o r d e r border border 即可证明
回文串
b
o
r
d
e
r
border
border 的性质:
同上:回文串
b
o
r
d
e
r
border
border 可以划分成不超过
log
2
∣
S
∣
\log_2|S|
log2∣S∣ 段,每一段是
k
k
k 的等差数列
引理:若一个串
S
S
S 的最长回文
b
o
r
d
e
r
border
border
S
y
≥
∣
S
∣
/
2
S_y\ge |S|/2
Sy≥∣S∣/2,那么
S
S
S 为回文串
考虑一个回文串
S
S
S 的最长后缀回文(也是前缀回文)
S
y
S_y
Sy,以及次长后缀 / 前缀回文
S
z
S_z
Sz
有结论:
S
=
S
y
+
u
=
u
+
S
y
,
S
y
=
S
z
+
v
=
v
+
S
v
S=S_y+u=u+S_y,S_y=S_z+v=v+S_v
S=Sy+u=u+Sy,Sy=Sz+v=v+Sv,要么
∣
u
∣
>
z
|u|>z
∣u∣>z,要么
u
=
v
u=v
u=v
显然有:
∣
u
∣
≥
∣
v
∣
|u|\ge |v|
∣u∣≥∣v∣,若
∣
u
∣
=
∣
v
∣
|u|=|v|
∣u∣=∣v∣ 则
u
=
v
u=v
u=v
下面假设
∣
u
∣
>
∣
v
∣
,
∣
u
∣
≤
∣
z
∣
|u|>|v|,|u|\le|z|
∣u∣>∣v∣,∣u∣≤∣z∣,
S
z
S_z
Sz 为
S
z
+
u
S_z+u
Sz+u 的长度不小于一半的回文
b
o
r
d
e
r
border
border,故
S
z
+
u
S_z+u
Sz+u 为回文串,与
y
y
y 是最长回文串矛盾,得证
由此,若要跳出当前等差数列,必有 ∣ u ∣ > ∣ z ∣ |u|>|z| ∣u∣>∣z∣,此时长度至少减半