思路:利用栈的思想,遇到左括号,押入栈中,遇到右括号,将栈顶元素弹出并与当前括号比较是否匹配,如果不匹配直接返回false,最后判断栈是否为空,空则有效,不空着说明右括号少了
注意: 在遇到右括号时,如果栈为空,则表示先遍历到右括号,直接返回false
var isValid = function(s) {
let stack = []
for (let i = 0; i < s.length; i++) {
switch (s[i]) {
case '(':
case '[':
case '{':
stack.push(s[i])
break;
case ')':
case ']':
case '}':
if (!stack.length) return false
let cur = stack.pop()
if (cur === '(' && s[i] !== ')') return false
if (cur === '[' && s[i] !== ']') return false
if (cur === '{' && s[i] !== '}') return false
break;
}
}
return stack.length === 0
};