给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
输入: "cbbd"
输出: "bb"
class Solution:
def longestPalindrome(self, s: str) -> str:
size = len(s)
if size == 0:
return s
res = s[0]
def extend(i,j,s):
while i>=0 and j <len(s):
if s[i] == s[j]:
i -=1
j +=1
else:
break
return s[i+1:j]
for i in range(size-1):
res1 = extend(i,i,s) # 单数扩散
res2 = extend(i,i+1,s) # 双数扩散
if max(len(res1),len(res2)) > len(res):
res = res1 if len(res1) > len(res2) else res2
return res
中心扩散法
注意中可以是单个数 也可以是双数