NOTE
最长有效括号
使用栈标记匹配括号,再统计最长连续有效区间。
这是历史学习笔记,可能存在过时或不完整的理解。
1. 题目描述
给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。
2. 思路
- 思路一
- 栈验证括号+统计最长连续序列.md
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
}
讨论
使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看