MANACHER 最长回文序列

本文介绍一种高效的回文串查找算法,通过记录每个位置的回文半径及当前扫描范围的最大边界来减少不必要的比较。该算法针对四种不同情况讨论了如何快速确定待检查位置的初始回文半径,并在必要时进行扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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回文半径内部,则需要常规办法左右扩展

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值