思路
使用栈 然后遍历
如果当前元素为左边括号,将其压入栈中
如果为右边分类讨论
1)如果栈不为空且为对应左半边的括号,则取出栈顶元素,继续循环
2)若此时栈为空,则直接返回false
3)若不为对应的左半边括号,反之返回false
代码
/*** @param {string} s* @return {boolean}**/var isValid = function(s) {let stack = [];const mapper = {"{":'}','(':')','[':']'}for(let i in s) {const v = s[i];if(['{','(','['].indexOf(v) > -1) {stack.push(v)}else {const peak = stack.pop();if(v !== mapper[peak]) {return false}}}if (stack.length > 0) return falsereturn true};
