最长回文子串
题目描述
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。
输入样例
"babad"
"cbbd"
输出样例
"bab"
"bb"
解题思路
由于回文串的最大特点是从中间开始延伸向两边的所有字符都相等,所以我们可以遍历该字符串,将每个点看作字符串的中点,按基数和偶数延伸该字符串,延伸的最大长度即是该题的解。
代码展示
class Solution:
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
result = ""
for i in range(len(s)):
tmp = self.findMaxLength(s, i, i)
if len(tmp) > len(result):
result = tmp
tmp = self.findMaxLength(s, i, i + 1)
if len(tmp) > len(result):
result = tmp
return result
def findMaxLength(self, s, left, right):
while left >= 0 and right < len(s) and s[left] == s[right]:
left -= 1
right += 1
return s[left+1:right]