题目
给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为1000。
思路
中心扩散
以str[i]为中心
或者如果str[i] == str[i + 1],以str[i]和str[i + 1]这个整体为中心
class Solution:def longestPalindrome(self, s: str) -> str:length = len(s)if length <= 1: return smax_palindrome = ''for i in range(length):tmp = self.helper(s, i, length)max_palindrome = tmp if len(tmp) > len(max_palindrome) else max_palindromereturn max_palindromedef helper(self, s, mid, length):# 以当前mid为中心遍历一遍left, right = mid - 1, mid + 1odd_str = s[mid]while left >= 0 and right < length and s[left] == s[right]:odd_str = s[left : right + 1]left -= 1right += 1even_str = s[mid]if mid + 1 < length and s[mid] == s[mid + 1]:left = midright = mid + 1even_str = s[left : right + 1]while left >= 0 and right < length and s[left] == s[right]:even_str = s[left : right + 1]left -= 1right += 1return odd_str if len(odd_str) > len(even_str) else even_str
- 需要进一步完善
