61-最大有効かっこ-leetCode 32(python)
'('
および')'
のみを含む文字列が与えられ、最も長い有効な括弧を含むサブ列の長さが見出される.入力:「()」出力:2解釈:最大有効かっこ子列が「()」
例2:
入力:")()()"出力:4解釈:最大有効かっこ子列が"()()"
class Solution:
def longestValidParentheses(self, s: str) -> int:
if not s:
return 0
#
res = []
# (
stack = []
#
for i in range(len(s)):
# ), (, )( res
if stack and s[i] == ")":
res.append(stack.pop())
res.append(i)
# (,
if s[i] == "(":
stack.append(i)
# res
res.sort()
i = 0
ans = 0
n = len(res)
#
while i < n:
j = i
while j < n-1 and res[j+1] == res[j] + 1:
j += 1
ans = max(ans,j-i+1)
i = j + 1
return ans