【LeetCode刷题】5.最长回文子串

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

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:

输入: "cbbd"
输出: "bb"

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 方法一:暴力法(超时)

class Solution:
    def isPalindrome(self, sub_s:str) -> bool:
        l = len(sub_s)
        for i in range(int(l/2)):
            if sub_s[i] != sub_s[l-i-1]:
                return False
        return True

    def longestPalindrome(self, s: str) -> str:
        l = len(s)
        ans = ''
        sub_len = 0
        for i in range(l):
            for j in range(i+1, l+1):
                sub_s = s[i:j]
                if (self.isPalindrome(sub_s)) and (len(sub_s) > sub_len):
                    ans = sub_s
                    sub_len = max(sub_len, len(ans))
        return ans

时间复杂度:O(n^3)

方法二:动态规划

发布了83 篇原创文章 · 获赞 14 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_38121168/article/details/104193357