题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意:空字符串可被认为是有效字符串。
解答
思路:栈+Map数据结构
注意:判断字符串长度奇偶减少计算量
var isValid = function(s) {
let stack = []
len = s.length;
if(len & 1 !== 0)
return false;
let map = new Map([
['(', ')'],
['{', '}'],
['[', ']']
]);
for(let i = 0; i < len; i++){
let cur = s[i];
if(!map.has(cur)){
let temp = stack.pop();
if(map.get(temp) !== cur)
return false;
}else{
stack.push(cur)
}
}
return !stack.length;
};