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 协议 ,转载请注明出处!