时间复杂度 O(n) 空间复杂度 O(n+∣Σ∣),其中 Σ 表示字符集,本题中字符串只包含 6 种括号
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
const map = {"(":")","{":"}","[":"]"}
let arr = []
// 如果输入的数组为奇数时一定不满足条件
if(s.split('').length%2!==0){
return false
}
for(let item of s){
// 如果当前括号为左括号,将右括号压入栈
if(map[item]){
arr.push(map[item])
}else{
// 如果当前的括号是右括号,则弹出栈尾的括号判断是否等于当前的括号
// 等于则继续循环,不等于则括号不匹配
if (arr.pop()!== item) {
return false;
}
}
}
return arr.length === 0
};