题目
代码
/**
* 思路:使用栈
* 做法:遍历字符串
* 如果是左括号则添加进栈;
* 如果是右括号则与栈中最近的字符匹配看是否成对;
* 匹配则将左括号作出栈处理,不匹配证明字符串无效
*/
var isValid = function(s) {
let stack = [], length = s.length;
if (length % 2) return false
for (let item of s) {
if (item === '{' || item === '[' || item === '(') {
stack.push(item);
} else {
if (stack.length && stack.pop() === leftOf(item)) {
continue;
} else {
return false;
}
}
}
return !stack.length;
};
var leftOf = function(s) {
if (s === ')') return '(';
if (s === ']') return '[';
return '{';
}