解题思路
-
由于括号闭合顺序是先入后出与栈数据结构一样,因此使用栈数据结构来解决问题,定义
map变量创建栈存储左括号 -
通过
for of遍历字符串s -
当遇到左括号时,通过
push入栈stack -
当与到右括号时,通过
pop出栈stack并判断括号类型是否一样,不一样的话return false
/**
* @param {string} s
* @return {boolean}
*/
let isValid = function(s){
let size = s.length
if(size % 2 !== 0) return false
let map = new Map([
["]","["],
[")","("],
["}","{"],
])
let stack = []
for(ch of s){
if(map.has(ch)){
if(!stack.length || stack[stack.length - 1] !== map.get(ch)){
return false
}
stack.pop()
}else{
stack.push(ch)
}
}
return stack.length === 0
}