LeetCode 5. 最长回文子串

2022-08-20  本文已影响0人  草莓桃子酪酪
题目

给你一个字符串 s,找到 s 中最长的回文子串。

例:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

方法:动态规划

思路同 647. 回文子串,区别在于本题不需要计算可以分割成的回文串的个数,而是记录可以分割成的最长的回文串

class Solution(object):
    def longestPalindrome(self, s):
        dp = [[False] * len(s) for row in range(len(s))]
        length = 0
        left, right = 0, 0
        result = []
        for i in range(len(s)-1, -1, -1):
            for j in range(i, len(s)):
                if s[i] == s[j]:
                    if j - i <= 1:
                        dp[i][j] = True
                    elif dp[i+1][j-1]:
                        dp[i][j] = True
                    if dp[i][j] and length < j-i+1:
                        length = j-i+1
                        left = i
                        right = j
        for i in range(left, right+1):
            result.append(s[i])
        return ''.join(result)
上一篇 下一篇

猜你喜欢

热点阅读