isBalanced
JavaScript
function isBalanced(str) {
var openings = ["{"];
var closings = ["}"];
var opened = 0;
str.split("").forEach(function(char) {
if (opened < 0) {
return;
}
if (~openings.indexOf(char)) {
opened = opened + 1
} else if (~closings.indexOf(char)) {
opened = opened - 1
}
});
return opened == 0;
}
console.assert(isBalanced('foo { bar } }') == false)
console.assert(isBalanced('foo { bar { baz }') == false)
console.assert(isBalanced('foo { bar { baz } boo }') == true, "is balanced")
console.assert(isBalanced('{}{}') == true)
console.assert(isBalanced('{{}') == false)
console.assert(isBalanced('}{') == false)
console.assert(isBalanced('{[()]}') == true)
console.assert(isBalanced('{[{}][()]}') == true)