最大回文子串manacher算法python

本文详细介绍了Manacher算法,并通过Python代码实现,有效地找出给定字符串中的最大回文子串。Manacher算法利用了回文串的对称性质,大大减少了重复计算,提高了效率。
摘要由CSDN通过智能技术生成

关于最大回文子串问题,有两种处理方法:
1.以每个字符为中心,向两边寻找回文子串,遍历整个数组后,返回最长的。
该方法时间复杂度较大为o(n^2)
2.一个中等难度的动态规划算法:马拉车
step1:给每个字符左右都加上特殊字符比如'#',处理后,能使字符串s长度为奇
step2:现在的问题变成如何高效求得RL数组
定义:RL:是一个回文半径数组
          RL[i]:以第i个字符为对称轴的回文半径
          maxRight:当前访问到的所有回文串中最右边的字符位置
          Pos:maxRight对应回文串的对称轴所在位置
          i:第i个字符
          j:i关于pos的对称点

(1):i在maxright右边:就是说以i为对称轴的回文串还没被访问。
                        这时,以i为中心向两边扩展,当达到边界or字符不相等时停止。
(2):i在maxright左边:扫到了一部分以i为对称轴的子串。
                       这时,令以i为对称轴的回文半径RL【i】=min(RL[j],maxrig
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值