32. 最长有效括号

81 阅读1分钟

32. 最长有效括号

思路 :每次遇到),就出栈一个元素,如果栈空了,则会将当前的下标值作为新的栈值插入队列中, 如果栈中依然没有空,则读取一次长度和最值做比较,取最优值

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(")(())"));