HOT 100 › 索引 › B16 多维动态规划 Multi-dimensional DP
LC 5最长回文子串Longest Palindromic Substring 中等
求字符串 s 中最长的回文子串,若有多个返回任意一个。
思路 中心扩展:枚举 2n-1 个中心(奇偶各一),向两侧扩展求长度,再由中心和长度算回起点。时间 O(n²)。
class Solution: def longestPalindrome(self, s: str) -> str: n = len(s) start = end = 0 def expand(l: int, r: int) -> int: while l >= 0 and r < n and s[l] == s[r]: l -= 1 r += 1 return r - l - 1 for i in range(n): k = max(expand(i, i), expand(i, i + 1)) if k > end - start + 1: start = i - (k - 1) // 2 end = i + k // 2 return s[start:end + 1]