最佳答案
在花了6-8个小时试图消化教练的算法之后,我准备放弃了。但在此之前,我还有最后一个问题: 有人能解释一下吗?我不在乎密码。我需要有人解释一下 算法。
这似乎是其他人在解释算法时喜欢的一个地方: Http://www.leetcode.com/2011/11/longest-palindromic-substring-part-ii.html
我明白你为什么要把字符串,比如,“ abba”转换成 # a # b # b # a # 在我迷失之后。例如,前面提到的网站的作者说,算法的关键部分是:
if P[ i' ] ≤ R – i,
then P[ i ] ← P[ i' ]
else P[ i ] ≥ P[ i' ]. (Which we have to expand past
the right edge (R) to find P[ i ])
这似乎是错误的,因为他/她曾经说过,当 P [ i’] = 7且 P [ i ]不小于或等于 R-i 时,P [ i ]等于5。
如果你不熟悉算法,这里有一些更多的链接: http://tristan-interview.blogspot.com/2011/11/longest-palindrome-substring-manachers.html(我已经尝试了这一个,但术语是可怕的和令人困惑的。首先,有些事情没有定义。还有,变数太多。您需要一个检查表来回忆哪个变量指的是什么。)
另一个是: http://www.akalin.cx/longest-palindrome-linear-time(祝你好运)
该算法的基本思想是在线性时间内寻找最长的回文。它可以在 O (n ^ 2)中完成,只需要最少到中等的努力。这个算法被认为是相当“聪明”的,可以把它降到 O (n)。