给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。
括号必须以正确的顺序关闭,”()” 和 “()[]{}” 是有效的但是 “(]” 和 “([)]” 不是。
思路:我们需要一个栈,遍历字符串,如果是左半括号,就压入栈中,如果是右半括号,就从栈中拿出栈顶元素匹配,如果成对,则继续遍历。如果栈为空,则返回false。
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
let bracketStack = [];
for(let i = 0; i < s.length; i++){
let char = s.charAt(i);
if(char == "(" || char == "[" || char == "{"){
bracketStack.push(char);
} else {
if(bracketStack.length === 0) {
return false;
}
let oldChar = bracketStack.pop();
if(oldChar == '(' && char != ')'){
return false;
} else if(oldChar == '[' && char != ']'){
return false;
} else if(oldChar == '{' && char != '}'){
return false;
}
}
}
return bracketStack.length === 0;
};