NOTE

最长有效括号

使用栈标记匹配括号,再统计最长连续有效区间。

Data Structures & Algorithms创建于 更新于 约 1 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 题目描述

给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。

2. 思路

  1. 思路一

3. 实现

3.1. 栈

func longestValidParentheses(s string) int {
    m := make(map[int]bool,0) 
    var stack []int
    for i, ch := range s {
        if ch == '(' {
            stack = append(stack, i)
        }else {
            if len(stack) > 0 {
                top := stack[len(stack)-1]
                stack = stack[:len(stack)-1]
                m[top] = true
                m[i] = true
            }
        }

    }
    maxCount := 0
    for index := range m {
        if m[index-1] {
            continue
        }
        count := 0
        for m[index] {
            count++
            index++
        }
        maxCount = max(maxCount, count)
    }
    return maxCount
}

func max(a, b int) int {
    if a > b { return a }
    return b
}

4. 参考

讨论

使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看