题目
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
思路
栈:先进后出
- 定义Map集合存储有效括号的对应关系
- 通过判断入栈,出栈后最后的栈的长度是否为0
- 如果传入字符串 模运算 (s % 2 !==0)时传入的字符串肯定不是整对的,直接return
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
if( s.length % 2 ===1 ) return false
var mapping = new Map([[')', '('], ['}', '{'], [']', '[']]);
var stack=[]
for(var i=0;i<s.length;i++){
var current=s[i]
if(mapping.get(current) && mapping.get(current) === stack[stack.length-1]){
stack.pop()
}else{
stack.push(current)
}
}
return stack.length === 0
};