思想:首先判断字符串是否是包含偶数个字符,如果为奇数个肯定存在括号对应不上,然后再通过一定要先有左括号再有右括号,所以我们利用map先判断是否存在,如果是我们先设定可以包含的数据再进行push,如果不存在则不合法。其次我们将最后一个数据对应的右括号和当前的字符比较,如果不相等或者已有数据为空则返回false,不然就将最后一个数据弹出。最后判断是否全部弹出,如果是则为有效负责就无效。
var isValid = function(s) {
if(s.length%2 !== 0) return false
const map = new Map([
['(',')'],
['{','}'],
['[',']']
])
let stk = []
for( ch of s){
if(map.has(ch)){
stk.push(ch)
}else{
if(map.get(stk[stk.length - 1]) !== ch || stk.length == 0 ) return false
else stk.pop()
}
}
return stk.length == 0
};