每日一题力扣32

 

给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。

 

class Solution:
    def longestValidParentheses(self, s: str) -> int:
        ans=0       # 最大合法长度(返回值)
        stack=[-1,]  # stack[0]:合法括号起点-1 ; stack[1:]尚未匹配左括号下标
        for i,ch in enumerate(s):
            if '('==ch:  # 左括号
                stack.append(i)
            elif len(stack)>1:  # 右括号,且有成对左括号
                stack.pop()     # 成对匹配
                ans = max(ans, i - stack[-1])
            else:   # 非法的右括号
                stack[0]=i
        return ans

 

posted @ 2021-03-17 15:40  小千北同学超爱写代码  阅读(73)  评论(0)    收藏  举报