75.有效的括号

题目描述

给定一个只包括 '('')''{''}''['']'的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例

  1. 示例 1:

输入:s = "()" 输出:true

  1. 示例 2:

输入:s = "()[]{}"

输出:true

  1. 示例 3:

输入:s = "(]"

输出:false

  1. 示例 4:

输入:s = "([])"

输出:true

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

参考答案

DETAILS
function isValid(s) {
  if (s.length % 2 !== 0) return false; // 奇数长度直接返回false
  const stack = [];
  const mapping = { ")": "(", "]": "[", "}": "{" };

  for (const char of s) {
    if (char in mapping) {
      // 栈不为空时,判断栈顶元素是否与当前字符匹配
      // 当前字符是右括号
      const top = stack.pop() || "#"; // 栈为空时用'#'占位
      if (top !== mapping[char]) {
        return false; // 不匹配则直接返回
      }
    } else {
      // 当前字符是左括号
      stack.push(char);
    }
  }
  return stack.length === 0; // 栈空则所有括号正确闭合
}
console.log(isValid("()[]{}")); // 输出: true
最后更新时间' 2025/3/9 18:24:05