Skip to content
On this page

20. 有效的括号

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

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

示例 1:
输入:s = "()"
输出:true

示例  2:
输入:s = "()[]{}"
输出:true

示例  3:
输入:s = "(]"
输出:false

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

javascript
/**
 * @param {string} s
 * @return {boolean}
 */
// 解法一 使用入栈和出栈的方式
var isValid = function (s) {
  var stack = [],
    symbolMap = {
      "(": ")",
      "[": "]",
      "{": "}",
    }
  for (let i = 0; i < s.length; i++) {
    const ele = s[i]
    if (symbolMap[ele]) {
      stack.push(ele)
    } else if (symbolMap[stack.pop()] !== ele) {
      return false
    }
  }
  return stack.length === 0
}

console.log(isValid("()"))
console.log(isValid("()[]{}"))
console.log(isValid("(]"))
console.log(isValid("("))