最长有效括号

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

  • 输入:s = “(()”
    输出:2
    解释:最长有效括号子串是 “()”

  • 输入:s = “)()())”
    输出:4
    解释:最长有效括号子串是 “()()”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var longestValidParentheses = function(s) {
let max = 0;
let stack = [-1];

for (let i = 0; i < s.length; i++) {
if (s[i] === ')') {
stack.pop();

if (stack.length === 0) {
stack.push(i);
continue;
}

const cur = i - stack[stack.length - 1];
if (cur > max) max = cur;
continue;
}

stack.push(i);
}

return max;
};