NO32.有效的括号
暴力解法,俩次循环第一次记录(的每个下标,再分别做判断 class Solution: def longestValidParentheses(self, s: str) -> int: lg = len(s) nums = [i for i in range(lg) if s[i] == '('] if len(nums) == lg: return 0 ret = 0 for left in nums: a, b = 0, 0 for i in range(left, lg): if s[i] == '(': a += 1 else: b += 1 if a == b: ret = max(ret, a * 2) elif b > a: break return ret
#括号匹配,由于是一对因此想到栈,只是需要考虑如何表示有效长度的问题 class Solution: def longestValidParentheses(self, s: str) -> int: res = 0 stack = [-1] #为了方便记录当前有效长度 for i,c in enumerate(s): if c=='(':# 如果是(,直接进栈 stack.append(i) elif len(stack)==1: #代表stack已经没有( stack.pop() stack.append(i) else: stack.pop() res = max(res,i-stack[-1]) #更新 return res