給定乙個只包含 『(』 和 『)』 的字串,找出最長的包含有效括號的子串的長度。
示例 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...