最长有效括号
给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。
示例 1:
输入: “(()”
输出: 2
解释: 最长有效括号子串为 “()”
示例 2:
输入: “)()())”
输出: 4
解释: 最长有效括号子串为 “()()”
解题思路
输入的“(”是否有与之对应的“)”,求最大有效括号长度
方法一:暴力解法
解题思路
1、括号都是成对出现的,最长有效括号数一定是偶数
2、依次遍历当前子串是否为有效子串(从大往小遍历)
3、直到出现符合的子串,返回子串长度
代码
class Solution:
def longestValidParentheses(self, s: str) -> int:
#定义函数判断是否为有效子串
def isValid(x):
#用栈的方式实现
stack = []
for i in range(len(x)):
#如果当前为左括号将其入栈
if x[i] == '(':
stack.append('(');
#如果当前为右括号,判断此时栈顶元素是否为左括号,是的话将其弹出,
#如果不是则当前子串不是有效子串
elif stack!=[] and stack[-1] == '(':
stack.pop();
else:
return False
#有效子串栈中元素括号是一一对应的,栈中元素一定为空
return stack==[]
#主调函数
if len(s)<2:return