LeetCode_1日あたり1つの質問_python_Question 5文字が繰り返されない最長の部分文字列

文字列sを指定して、sで最も長い回文の部分文字列を見つけます。sの最大長は1000と想定できます。

例1:

入力:「babad」
出力:「bab」
注:「aba」も有効な回答です。
例2:

入力: "cbbd"
出力: "bb"

出典:LeetCode
 

class Solution:
    def longestPalindrome(self, s: str) -> str:
        n = len(s)
        dp = [[False] * n for _ in range(n)]
        ans = ""
        for l in range(n):
            for i in range(n):
                j = i + l
                if j >= len(s):
                    break
                if l == 0:
                    dp[i][j] = True
                elif l == 1:
                    dp[i][j] = (s[i] == s[j])
                else:
                    dp[i][j] = (dp[i + 1][j - 1] and s[i] == s[j])
                if dp[i][j] and l + 1 > len(ans):
                    ans = s[i : j + 1]
        return ans

 

おすすめ

転載: blog.csdn.net/qq_42548880/article/details/108483584