https://segmentfault.com/a/1190000008484167
https://subetter.com/algorithm/manacher-algorithm.html
两篇是完全一样的,另外我认为manacher算法的mx即保存的右边界,应该是指当前已知的所有回文串中,这些回文串可到达的最右边界,而非是最长回文串的有右边界,此点需要格外注意,很多人都理解错了。(有兴趣的同学可以想想为什么)–>是为了尽可能的复用已有的结果(根据对称性)
理解了这一点,基本上其他问题只要看这篇文章就全懂了。
时间复杂度呢?你只需要关注一点,当mx到数组尾部的时候,这个’游戏’(或者说这个算法真正耗时的部分)就已经结束了,所以这也就是为什么O(n)的时间复杂度。