【leetcode】20.有效的括号
题目
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
解题思路
1.创建数组map
2.利用堆栈的思路,将左括号放入数组中
3.判断
3.1 如果输入右括号,此时没有左括号,返回false
3.2 如果输入右括号,判断与当前数组的最后一个的左括号是否相匹配
var isValid = function(s) {
if(s.length%2===1){
return false;
}
const map = new Map([
['(',')'],
['{','}'],
['[',']']]
);
const stack = [];
for(let i = 0; i < s.length; i++){
if(map.has(s[i])){
stack.push(s[i])
}else{
if(stack.length===0){
return false;
}
if(map.get(stack.pop())!==s[i]){
return false
}
}
}
return stack.length===0;
};