核心思想: 如果是"("就入栈,如果")"就弹出栈顶元素,最后看栈的长度是否为0;
(1)圆括号平衡
function bracketBalance(str){
var arr = [];
var temp = str.split("");
temp.forEach(function(item){
if(item == '('){
arr.push('(');
}else{
if(arr.length == 0){
return false;
}else{
arr.pop();
}
}
});
return arr.length == 0;
}
(2)多种括号平衡
function bracketBalance(str){
var arr = [];
for(var i=0;i<str.length;i++){
if(str[i]=="(" || str[i]=="[" || str[i]=="{"){
arr.push(str[i]);
}
if(str[i]==")" || str[i]=="]" || str[i]=="}"){
if(arr.length ==0){ return false}
var popValue = arr.pop();
switch(str[i]){
case ')':{
if(popValue != "("){
return false;
}
break;
}
case ']':{
if(popValue != "["){
return false;
}
break;
}
case '}':{
if(popValue != "{"){
return false;
}
break;
}
}
}
}
return arr.length == 0;
}