给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。
示例 1:
输入: “(()”
输出: 2
解释: 最长有效括号子串为 “()”
思路:
class Solution():
def longestValidParentheses(self,s):
ans = 0
stack = [-1] # 先初始化一个-1,这样即使第一个相减也是得到1
for i in range(0, len(s)):
# 遇到左括号进栈,遇到右括号出一个左括号。
# 相当于每次计算可以消去的括号的索引差,即长度,求一个最大的长度。
if s[i] == "(":
stack.append(i)
else:
stack.pop(-1)
if len(stack)==0: # 栈为空时,把右括号的索引加入栈中,用来后面相减
stack.append(i)
else:
ans = max(ans,i-stack[-1]) # i为当前数的索引,stack[-1]为上次符合条件的前一个数,相减为长度
return ans
来源:CSDN
作者:三岁与十八
链接:https://blog.csdn.net/qq_27921205/article/details/104166575