leetcode 5.最长回文子串(python) 768ms

题目描述:

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例1:

输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。

示例2:

输入: “cbbd”
输出: “bb”

解题思路:

暴力穷举:

class Solution(object):
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
        """
        longest = ""
        for idx in range(len(s)):
            for jdx in range(idx + 1, len(s) + 1):
                if jdx - idx > len(longest) and s[idx: jdx] == s[idx: jdx][::-1]:
                    longest = s[idx: jdx]
        return longest

性能:
在这里插入图片描述
但是这种方法存在计算冗余,比如当一个较短的str不是回文时,以这个str为中心更长的str也不可能是回文

因此提出动态规划的方法:

class Solution(object):
    def palindrome(self, x, y, s):
        while(x>=0 and y len(longest):
                longest = pal1 if len(pal1) >= len(pal2) else pal2
        return longest

性能:
在这里插入图片描述

你可能感兴趣的:(leetcode,leetcode,字符串,回文)