32 最長有效括號

2021-10-02 13:10:13 字數 769 閱讀 1620

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

示例 1:

輸入: 「(()」

輸出: 2

解釋: 最長有效括號子串為 「()」

思路

class

solution()

:def

longestvalidparentheses

(self,s)

: ans =

0 stack =[-

1]# 先初始化乙個-1,這樣即使第乙個相減也是得到1

for i in

range(0

,len

(s))

:# 遇到左括號進棧,遇到右括號出乙個左括號。

# 相當於每次計算可以消去的括號的索引差,即長度,求乙個最大的長度。

if s[i]

=="("

:else

: stack.pop(-1

)iflen(stack)==0

:# 棧為空時,把右括號的索引加入棧中,用來後面相減

else

: ans =

max(ans,i-stack[-1

])# i為當前數的索引,stack[-1]為上次符合條件的前乙個數,相減為長度

return ans

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...