思路
1.把三种括号存在map里面
2.判断有没有左括号,有就push进starck
3.如果是右括号就拿出数组里的最后一位比较,是不是一样
- 判断是不是空数组,不是就说明没有成对的括号,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