思路 :每次遇到),就出栈一个元素,如果栈空了,则会将当前的下标值作为新的栈值插入队列中,
如果栈中依然没有空,则读取一次长度和最值做比较,取最优值
var longestValidParentheses = function (s) {
s = ")" + s;
let len = s.length;
let maxLen = 0;
const arr = [];
for (let i = 0; i < len; i++) {
if (s[i] === "(") {
arr.push(i);
} else {
arr.pop();
let len = arr.length;
if (len === 0) {
arr.push(i);
} else {
maxLen = Math.max(maxLen, i - arr[len - 1]);
}
}
}
return maxLen;
};
// console.log(longestValidParentheses("()))))()()"));
console.log(longestValidParentheses("(())"));
// console.log(longestValidParentheses(")(())"));