字符串 border

字符串 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| log2S 段,每一段是 k k k 的等差数列

  • 引理 1:若存在一个 b o r d e r border border S k S_k Sk 那么 ∣ S ∣ − k |S|-k Sk 为字符串的一个周期
  • 引理 2:若 p , q p,q p,q 为字符串的周期且 p + q ≤ ∣ S ∣ − g c d ( p , q ) p+q\le|S|-gcd(p,q) p+qSgcd(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} 2S 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 SB 为最小周期,那么 ∣ S ∣ − B ∣ ∣ S ∣ − A |S|-B||S|-A SBSA,令 q = ∣ S ∣ − B q=|S|-B q=SB,由 q q q 是最小周期知道 ∣ S ∣ − k q ≥ ∣ S ∣ 2 |S|-kq\ge \frac{|S|}{2} Skq2S 都是字符串的 b o r d e r border border,这里不小于长度一半的限制是将引理 2 弱化成 p + q ≤ ∣ S ∣ p+q\le |S| p+qS

那么递归考虑 < ∣ S ∣ 2 <\frac{|S|}{2} <2S 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| log2S 段,每一段是 k k k 的等差数列

引理:若一个串 S S S 的最长回文 b o r d e r border border S y ≥ ∣ S ∣ / 2 S_y\ge |S|/2 SyS/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| uv,若 ∣ u ∣ = ∣ v ∣ |u|=|v| u=v u = v u=v u=v
下面假设 ∣ u ∣ > ∣ v ∣ , ∣ u ∣ ≤ ∣ z ∣ |u|>|v|,|u|\le|z| u>v,uz 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,此时长度至少减半

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值