leetcode 5 longest palindromic substring
来源:1-1 快速排序法的原理
weixin_慕圣6334738
2021-09-14 21:48:46
老师你好 我想请教一下第5题的On解法(manacher algorithm)
我看了好多视频愣是没看懂这个算法的逻辑, 想向您请教一下~
1回答
liuyubobobo
2021-09-15
manacher algorithm 是一个无论面试,升学,考研,考博,都肯定不会考的算法。甚至在大多数算法书中根本没有的算法。
但如果你对此感兴趣,这篇文章是我认为讲 manacher 讲的最好的文章:https://oi-wiki.org/string/manacher/
几点提示:
1)描述性文字看不懂的时候,请结合下面的代码看。看这段计算 d1 的代码就好:
d2 和 d1 大同小异。代码非常短,和看所有算法代码一样,一定要理解每个变量到底在代表什么。每一个自过程或者每一句话的用以到底是什么。
2)整个算法的核心是,保持存储着当前找到的最靠右的回文串。注意,不是最长的回文串,是最靠右的回文串。(l, r)存储。理解这一点是这个算法的关键。再强调:(l, r) 是已经找到的最靠右,最靠右,最靠右的回文串。
3)整个算法的思路和 z-algorithm 的思路很像。如果你学习过 z-algorithm,理解起来会很容易。但 z-algorithm 也是一个无论面试,升学,考研,考博,都肯定不会考的算法。甚至在大多数算法书中根本没有的算法。所以你很有可能没有学过 z-algorithm。反向的,如果理解了这个 manacher 算法,如果感兴趣,可以找找 z-algorithm 的资料自学一下,体会一下这种思想的应用。
继续加油!:)
相似问题