LeetCode20 有效的括号

题目描述

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

示例 1:

输入: “()”
输出: true
示例 2:

输入: “()[]{}”
输出: true
示例 3:

输入: “(]”
输出: false
示例 4:

输入: “([)]”
输出: false
示例 5:

输入: “{[]}”
输出: true
*/

// 解题步骤
// 1,新建一个栈
// 2,扫描字符串,遇到左括号入栈,遇到和栈顶括号类型匹配的右括号就出栈,类型不匹配就判定为不合法
// 3,最后栈空了就合法,否则不合法

var isVaild = function (s) {
  if (s.length % 2 === 1) return false
  const stack = []
  for (let i = 0, len = s.length; i < len; i++) {
    const c = s[i]
    if (c === '(' || c === '{' || c === '[') {
      stack.push(c)
    } else {
      const t = stack[stack.length - 1] // 栈顶元素
      if (
        (t === '(' && c === ')') || (t === '{' && c === '}') || (t === '[' && c === ']')
      ) {
        stack.pop()
      } else
        return false
    }
  }
  return stack.length === 0
}
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享