Manacher算法

给定一个字符串,求出其最长回文子串。例如:

  1. s="abcd",最长回文长度为 1;
  2. s="ababa",最长回文长度为 5;
  3. s="abccb",最长回文长度为 4,即bccb。

以上问题的传统思路大概是,遍历每一个字符,以该字符为中心向两边查找。其时间复杂度为$O(n^2)$,效率很差。

1975年,一个叫Manacher的人发明了一个算法,Manacher算法(中文名:马拉车算法),该算法可以把时间复杂度提升到$O(n)$。下面来看看马拉车算法是如何工作的。

 

https://subetter.com/algorithm/manacher-algorithm.html

posted @ 2019-08-21 09:55  JXY_Super  阅读(119)  评论(0编辑  收藏  举报