DP LeetCode32 最長有效括號

2021-10-07 18:23:21 字數 1352 閱讀 4276

給定乙個只包含 '(' 和 ')' 的字串,找出最長的包含有效括號的子串的長度

這時,需要看其前面對元素來判斷是否有有效括號對。

# dp[i] 表示以 i 結尾的最長有效括號

dp = [0] * n

res = 0

for i in range(n):

# 1:當 s[i] 為 (,dp[i] 必然等於 0,因為不可能組成有效的括號

# 2:那麼 s[i] 為 )

if i > 0 and s[i] == ")":

# 2.1 當 s[i-1] 為 (

if s[i - 1] == "(":

dp[i] = dp[i - 2] + 2

# 2.2 當 s[i-1] 為 ) 並且 s[i-dp[i-1] - 1] 為 (

elif s[i - 1] == ")" and i - dp[i - 1] - 1 >= 0 and s[i - dp[i - 1] - 1] == "(":

dp[i] = dp[i - 1] + 2 + dp[i - dp[i - 1] - 2] # 測試用例 )()(()))

if dp[i] > res:

res = dp[i]

return res

s = ')()(()))' # 6

s = solution()

print(s.longestvalidparentheses(s))

solution/dong-tai-gui-hua-si-lu-xiang-jie-c-by-zhanganan042/

32 最長有效括號

給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 class solution return res dp i 表示以當前位置為終點的最長長度,則只能在 處更新,如果s i 1 dp...

32 最長有效括號

給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。輸入 輸出 2 解釋 最長有效括號子串為 輸入 輸出 4 解釋 最長有效括號子串為 示例沒有說明,其實 也是有效的,答案為4 class solution def longestvalidparentheses self,s str i...

32 最長有效括號

題目.high 字串首先想到dp,以第n個數為結尾的最大括號數,要麼是前面n 1的最大括號數,要麼是一第n個數結尾的括號數 package main import fmt func endlongerst s string int else if rights 0 return pairs func...