[20] 有效的括号

83 阅读1分钟

思路

1.把三种括号存在map里面

2.判断有没有左括号,有就push进starck

3.如果是右括号就拿出数组里的最后一位比较,是不是一样

  1. 判断是不是空数组,不是就说明没有成对的括号,return false
/*
 * @lc app=leetcode.cn id=20 lang=javascript
 *
 * [20] 有效的括号
 */

// @lc code=start
/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function (s) {
  let map = new Map()
  // 存三种括号
  map.set('(', ')')
  map.set('[', ']')
  map.set('{', '}')
  let starck = []
  for (let i = 0; i < s.length; i++) {
    if (map.has(s[i])) {//判断有没有左括号,有就push进starck
      starck.push(map.get(s[i]))
    } else {
      if (starck.pop() !== s[i]) {
        //如果是右括号就拿出数组里的最后一位比较,是不是一样
        return false
      }
    }
  }
  //判断是不是空数组
  if (starck.length !== 0) {
    return false
  }
  return true
}
// @lc code=end