MANACHER 最长回文序列

来源:互联网 发布:农村淘宝订单佣金 编辑:程序博客网 时间:2024/05/28 11:30


1、用一个数组记录字符串中每一个位置的回文半径

2、变量PR记录回文半径能扫到的最右位置的下一个索引值

3、变量index代表2中PR所对应的回文中心,二者在遍历过程中不断更新


图中left与right关于index对称,i'与i关于index对称,a、b和a'、b分别关于i 、i'对称


第一种情况,i’的回文半径落在index回文半径内部,i的回文半径就为i'的回文半径

例如:cabaddabac

第二章情况,i'的左侧回文半径落在index回文半径外部,i的回文半径即为途中right'到right的位置,与left和left'的位置关于index对称

例如:abacabd

第三章情况,i'的左侧回文半径端点正好落在index左侧端点上,i的回文半径至少与i'的回文半径相当,还需向左右扩展检测

例如:dabacabac

第四章情况,如果i部落在index回文半径内部,则需要常规办法左右扩展

0 0
原创粉丝点击