**链接:****传送门 **
思路:**根据完美队形的定义,可以得知,完美队形实质上是 回文串 + 序列出现峰,因为是在回文串中再次增加了一个要求,所以可以对 Manacher 进行改造,改造的部分应该为暴力匹配的循环 for( ; str[ i + p[i] ] == str[ i - p[i] ] ; p[ i ]++); ,根据 Manacher 的原理可以得知,如果判断到“间隔符”,直接忽略掉即可,因为它并不影响到“峰值”,对于非间隔符来说,需要判断它与前一个间隔符是否具有序列不增的性质,即可以将 Manacher 的暴力匹配部分改造为 for(