最長迴文子串(Python3)

問題描述:
給定一個字符串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度爲 1000。
示例:
輸入: "babad"
輸出: "bab"
注意: "aba" 也是一個有效答案。

解決思路:從字符串的第一個字符開始遍歷到最後一個字符,判斷該字符到第一個字符的子串是否爲迴文,設立變量更新最長的迴文子串長度。

代碼如下^-^:

class Solution:
    def longestPalindrome(self, s: str) -> str:
        if s == None:
            return None
        length = len(s)
        if length <= 1:
            return s
        dp = [[0 for i in range(length)] for i in range(length)]
        ss = s[0]
        re = 1
        for i in range(0,length):
            for j in range(0,i+1):
                if i-j<=1:
                    if s[j]==s[i]:
                        dp[j][i]=1
                        if re < i-j+1:
                            ss = s[j:i+1]
                            re = i-j+1
                else:
                    if s[j]==s[i] and dp[j+1][i-1]:
                        dp[j][i]=1
                        if re < i-j+1:
                            ss = s[j:i+1]
                            re = i-j+1
        return ss

時間與空間複雜度:
image.png
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/probl...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章