LeetCode 516 最長回文子串行

2021-09-11 03:25:14 字數 855 閱讀 6582

這題看了好久 本來以為和最長字串差不多用動態規劃設兩個列表來算但是沒什麼頭緒

後來去看了別人的解法 看了十幾分鐘才看懂

下面這種解法 1單位要單獨拿出來算

從2開始因為互文的子串行兩頭肯定是一樣的 如 "aba" "acbca"

假如能使 martix[i][j] 等於從 s [i] 到 s[j] 所包含的最大子串行長度

那麼 當s[i] == s[j] 時 最大長度=matrix[i+1][j-1]+2

當s[i] != s[j]  最大長度= max(matrix[i][j-1],matrix[i+1][j]) 

我估摸著自己是想不粗來的 真的叼 但是只要能記住 我也就滿足了

class solution(object):

def longestpalindromesubseq(self, s):

""":type s: str

:rtype: int

"""n=len(s)

matrix = [[0 for i in range(n)]for i in range(n)]

for i range(n):

matrix[i][i]=1

for j in range(n):

for i in range(j-1,-1,-1):

if s[i]==s[j]:

matrix[i][j]=matrix[i+1][j-1]+2

else:

matrix[i][j]=max(matrix[i][j-1],matrix[i+1][j])

return matrix[0][n-1]

leetcode 516 最長回文子串行

給定乙個字串s,找到其中最長的回文子串行。可以假設s的最大長度為1000。示例 1 輸入 bbbab 輸出 4 乙個可能的最長回文子串行為 bbbb 示例 2 輸入 cbbd 輸出 2 乙個可能的最長回文子串行為 bb 解題思路 狀態 f i j 表示 s 的第 i 個字元到第 j 個字元組成的子串...

leetcode516 最長回文子串行

給定乙個字串s,找到其中最長的回文子串行。可以假設s的最大長度為1000。示例 1 輸入 bbbab 輸出 4 乙個可能的最長回文子串行為 bbbb 示例 2 輸入 cbbd 輸出 2 乙個可能的最長回文子串行為 bb f i j 表示 s 的第 i 個字元到第 j 個字元組成的子串中,最長的回文序...

Leetcode 516 最長回文子串行

描述 給定乙個字串s,找到其中最長的回文子串行。可以假設s的最大長度為1000。示例 1 輸入 bbbab 輸出 4 乙個可能的最長回文子串行為 bbbb 示例 2 輸入 cbbd 輸出 2 乙個可能的最長回文子串行為 bb 思路 遍歷每個子串,從下到上構造dp陣列,dp i j 表示從i到j的最長...