题目:给定一个字符串 s
,找到 s
中最长的回文子串。你可以假设 s
的最大长度为 1000。
一刷:
一刷只想到中心扩展,只有1个或者两个字母组成中心
class Solution:
def expand(self, s: str, left: int, right: int):
while(left >= 0 and right < len(s) and s[left] == s[right]):
left -= 1
right += 1
return left+1, right-1
def longestPalindrome(self, s: str) -> str:
left = 0
right = 0
for i in range(len(s)):
# 中心为1个
left1, right1 = self.expand(s, i, i)
# 中心为两个
left2, right2 = self.expand(s, i, i + 1)
if (right1 - left1) > (right2 - left2) and (right1 - left1) > (right - left):
left, right = left1, right1
elif (right2 - left2) > (right1 - left1) and (right2 - left2) > (right - left):
left, right = left2, right2
else:
continue
return s[left:right+1]