给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
思想:(1)分回文长度是奇数和偶数两种情况(2)遍历,向中间两边扩散判断是否是回文。
class Solution:
def longestPalindrome(self, s):
if len(s) in [0,1]:
return s
res = ""
#回文长度是奇数
for i in range(0,len(s)-1):
p,q=i-1,i+1
while p>=0 and q<=len(s)-1:
if s[p]!=s[q]:
break
p-=1
q+=1
if len(res)<len(s[p+1:q]):
res = s[p+1:q]
#回文长度是偶数
for i in range(0,len(s)-1):
if s[i]!=s[i+1]:
continue
p,q=i-1,i+2
while p>=0 and q<=len(s)-1:
if s[p]!=s[q]:
break
p-=1
q+=1
if len(res)<len(s[p+1:q]):
res = s[p+1:q]
return res








网友评论