class Solution(object):
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
k = len(s)
maxl = 0
start = 0
for i in range(k):
if i - maxl >= 1:
if s[i-maxl-1: i+1] == s[i-maxl-1: i+1][::-1]:
start = i - maxl - 1
maxl = maxl + 2
if i - maxl >= 0:
if s[i-maxl: i+1] == s[i-maxl: i+1][::-1]:
start = i - maxl
maxl = maxl + 1
return s[start: start + maxl]
最近学习了类似方法,稍微用我的理解解释一下。这个方法的主要优势是在求最大的过程,在确定了最大的回文子串长度后不对小于这个长度的字串进行计算。