求最长回文子串的Manacher算法

本文介绍了如何使用Manacher算法在O(n)时间内找到字符串的最长回文子串,通过处理奇偶长度回文串的统一,以及利用回文串的性质构建p数组,实现高效求解。算法复杂度为O(n),详细解释和原理解析见链接。
摘要由CSDN通过智能技术生成

最长回文子串以前一直是用后缀数组求的,今天看到一篇好文章写求O(n)求最长回文串的做法,所以呢就做个笔记

http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-linear-time-algorithm-for-finding-longest-palindrome-sub-string/   英文的

http://acm.uestc.edu.cn/bbs/read.php?tid=3258  电子科大BBS

回文串包括奇数长的和偶数长的,一般求的时候都要分情况讨论,这个算法做了个简单的处理把奇偶情况统一了。算法的基本思路是这样的,把原串每个字符中间用一个串中没出现过的字符分隔开来(统一奇偶),用一个数组p[ i ]记录以 str[ i ] 为中间字符的回文串向右能匹配的长度。先看个例子

原串:w  a   a   b   w   s   w   f   d

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值