LC 速查

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]
← 上一题 最小路径和最长公共子序列 下一题 →