给定一个串$S$,求$S$中最长的子串$T$,使得可以将$T$分为两个长度大于等于$1$的回文串,只需输出$T$的长度即可。
$\texttt{Data Range:}2\leq \vert S\vert \leq 10^5$
很明显的回文树题。只是因为窝不会马拉车
考虑枚举分的位置,假设以这个位置结尾的回文子串为$X$,这个位置开头的回文子串为$Y$,那么有
贪心地考虑,如果这个$X$或者$Y$的长度不是最大的话,那么它绝对不是答案,因为$X$或者$Y$还可以继续扩展。所以,这个位置的答案为$\max\{\vert X\vert +\vert Y\vert\}$。
于是预处理出位置$i$的$pre_i=\max\{\vert X\vert\}$和$suf_i=\max\{\vert Y\vert\}$。
然后很明显的扫一遍,求出$\max\{pre_i+suf_{i+1}\}$就好了。
代码
1 |
|