32. 最长有效括号
最长有效括号
题目描述:
给你一个只包含 ‘(‘ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。
示例 1:
输入:s = “(()”
输出:2
解释:最长有效括号子串是 “()”
示例 2:
输入:s = “)()())”
输出:4
解释:最长有效括号子串是 “()()”
示例 3:
输入:s = “”
输出:0
思路:
用栈的思想做
代码:
func longestValidParentheses(s string) int {
var stack []int
if s == ""{
return 0
}
var maxnum int
stack = append(stack,-1)
for i:=0;i<len(s);i++{
if(s[i] == '('){
stack = append(stack,i)
}else{
stack = stack[:len(stack)-1]
if len(stack ) == 0{
stack = append(stack,i)
}else{
maxnum = max(maxnum,i-stack[len(stack)-1])
}
}
}
return maxnum
}
func max( a int,b int )int{
if a>b{
return a
}else{
return b
}
}
代码效率:
执行用时:0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗:3.5 MB, 在所有 Go 提交中击败了30.20%的用户
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!