Skip to content
js
/*
 * @lc app=leetcode.cn id=32 lang=javascript
 *
 * [32] 最长有效括号
 */

// @lc code=start
/**
 * @param {string} s
 * @return {number}
 */
var longestValidParentheses = function (s) {
  var stack = [];
  var maxLength = 0,
    start = 0;
  for (let i = 0; i < s.length; i++) {
    //  如果是左括号就存起来
    if (s[i] === "(") {
      stack.push(i);
    } else {
      // 如果当前栈为空,则说明没有左括号匹配,则重新设置start
      if (stack.length === 0) {
        start = i + 1;
      } else {
        stack.pop();
        if (stack.length === 0) {
          maxLength = Math.max(maxLength, i - start + 1);
        } else {
          maxLength = Math.max(maxLength, i - stack[stack.length-1]);
        }
      }
    }
  }
  return maxLength;
};
// @lc code=end

longestValidParentheses("(()");

上次更新于: