目录
32. 最长有效括号
栈的操作,用列表来当栈就行
class Solution:
def longestValidParentheses(self, s: str) -> int:
if len(s)==0:
return 0
"""
计算规则:
1 2--3--4 5 6
想求某一段序列的长度,例如2~4,就用末尾的数减去开头的数前边的数,即4-1
"""
# 设置一个栈(列表),存放括号的下标值
stack = []
stack.append(-1) #先放进来一个-1,作为边界的处理,因为0号元素前边的数就是它
# 设置一个变量,记录最大值
maxn = 0
# 遍历字符串
for i in range(len(s)):
if s[i]=='(': #左括号直接将其下标入栈即可
stack.append(i)
else: #如果是右括号,先pop一下栈
stack.pop()
if len(stack)==0: #如果这次pop让栈空了,那就把这个右括号对应的下标放进来,作为替补
stack.append(i)
else: #如果没空,那它其实和刚才pop的元素配对了,最大长度就可以更新了
#根据计算规则,这个长度就是它减去此时栈顶的元素,因为序列最前边的值刚才被pop出去了
maxn = max(maxn, i-stack[-1])
return maxn
持续更新中……