给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。
思路
- 其实思路没有那么复杂,首先排除边界条件,然后将map和数组去对比就可以了
- 数组每一次遍历都需要push和pop操作
- map.get()的值需要和数组最后一个值去判断所以每次都要pop出去,直至全部弹出
- 数组的长度为空时就是true,反之为false
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
let map=new Map();
map.set(")","(");
map.set("]","[");
map.set("}","{");
const n=s.length;
if(n%2===1){
return false;
}
const string=[];
for(let ch of s){
if(map.has(ch)){
if(!string.length||string[string.length-1]!=map.get(ch)){
return false;
}
string.pop();
}else{
string.push(ch);
}
}
return !string.length;
};