Skip to content

Latest commit

 

History

History
60 lines (48 loc) · 1.13 KB

0020-有效的括号.md

File metadata and controls

60 lines (48 loc) · 1.13 KB

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。  

示例 1:

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

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

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

输入:s = "([)]" 输出:false 示例 5:

输入:s = "{[]}" 输出:true  

提示:

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

var isValid = function(s) {
  const left = ['(', '{', '[']
  const right = [')', '}', ']']
  const stack = []
  let bool = true
  for (let key of s.split('')) {
    const lIndex = left.indexOf(key)
    const rIndex = right.indexOf(key)
    if (lIndex > -1) {
      stack.push(lIndex)
    }
    if (rIndex > -1) {
      if (stack.pop() !== rIndex) {
        bool = false
        break
      }
    }
  }
  bool = !bool ? bool : stack.length === 0
  return bool
};

解题思路: 用一个栈来维护入栈和出栈的元素是否匹配,不是则马上return false, 最后再判断一下栈的长度是否归0