17
2019
04

Manacher算法

最长回文子串问题:给定一个字符串,求它的最长回文子串长度。

暴力解法:找到所有子串,验证是否是回文子串,时间复杂度是O(n^3)。

改进算法:遍历一遍字符串,求以每个字符为中心的回文子串长度,时间复杂度是O(n^2)。

用Manacher来解决最长回文子串问题,算法复杂度是O(n)。

Manacher算法属于动态规划,但是如果认为这样的算法才是动态规划,是对动态规划的误解,还会打击学习的积极性,动态规划只是在分治的基础上做了一些优化,《算法导论》里边讲的很好,也可以参考之前的一篇文章:动态规划

«1»