[({})] => true[()[]{}] => true{[(]} => false{[( => false
var isValid = function(str) {var stack = [],isBalance = true,open = '{[(',close = '}])',i = 0,symbol, top;while(i < str.length && isBalance) {symbol = str[i];if(open.includes(symbol)) {stack.push(symbol);} else {top = stack.pop();isBalance = open.indexOf(top) === close.indexOf(symbol);if(!isBalance) break;}i++;}return isBalance && stack.length === 0;}
利用栈来解决,
遍历字符串,当遇到开括号全部入栈,遇到闭括号出栈。
判断出栈的开括号是否与闭括号配对,如果配对继续遍历判断。
如果不配对即不是平衡括号。
遍历完成后,如果栈为空时,即所有开括号都应该有对应该的闭括号。否则还是不平衡。
