【字符串】字符串的boder和其性质、应用

定义
我们定义, 一个字符串 s s s, 它的 b o r d e r border border是"既是它的前缀又是它的后缀", 且不等于 s s s本身的串.
b o r d e r border border是所有 b o r d e r border border中的最长者.
显然,每个border 其实是KMP算法中, 字符串S的next数组。
性质
S k S_k Sk S 1... k S_{1...k} S1...k是字符串 S S S的一个 b o d e r boder boder,那么这些 b o r d e r border border可以划分成不超过 l o g 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≤∣S∣−gcd(p,q) p+qSgcd(p,q)也为字符串的周期。
应用
可以看看这个题:题目链接

你可能感兴趣的:(codeforces,字符串)