圆括号平衡,这里可以看相关的问题描述
主要关心代码的实现,
/*平衡圆括号*/
function isBracketBalanced(str) {
/*
@str:圆括号字符串,比如
"()()" "(()()())" 平衡
"(()" 非平衡, 左括号较多
"(()))))" 非平衡,右括号较多
*/
var pattern = /^(\(|\))*$/;
if(!pattern.test(str)) {
throw new Error("Your parameter can only include () character");
}
var stack = new Stack();
for(var i=0; i<str.length; ++i) {
if(str[i] == "(") {
stack.push("(");
}else {
if(!stack.pop()){
return false;
}
}
}
return stack.isEmpty();
}
console.log(isBracketBalanced("()()")); //true
console.log(isBracketBalanced("()())")); // false
console.log(isBracketBalanced("((()")); // false
console.log(isBracketBalanced("fafa")); // throw error