2018-10-04 13:37:37 +00:00
---
title: Balanced brackets
id: 594dc6c729e5700999302b45
challengeType: 5
---
## Description
< section id = 'description' >
2019-02-25 04:36:09 +00:00
Determine whether a generated string of brackets is balanced; that is, whether it consists entirely of pairs of opening/closing brackets (in that order), none of which mis-nest.
2019-03-01 08:10:50 +00:00
< h4 > < strong > Examples:< / strong > < / h4 >
| Input | Output |
| --- | --- |
| < code > []< / code > | true |
| < code > ][< / code > | false |
| < code > [][]< / code > | true |
| < code > ][][< / code > | false |
| < code > []][[]< / code > | false |
| < code > [[[[]]]]< / code > | true |
2018-10-04 13:37:37 +00:00
< / section >
## Instructions
< section id = 'instructions' >
< / section >
## Tests
< section id = 'tests' >
```yml
tests:
- text: < code > isBalanced</ code > is a function.
2018-10-20 18:02:47 +00:00
testString: assert(typeof isBalanced === 'function', '< code > isBalanced< / code > is a function.');
- text: < code > isBalanced("[]")</ code > should return true.
testString: assert(isBalanced(testCases[0]), '< code > isBalanced("[]")< / code > should return true.');
- text: < code > isBalanced("]][[[][][][]][")</ code > should return false.
testString: assert(!isBalanced(testCases[1]), '< code > isBalanced("]][[[][][][]][")< / code > should return false.');
- text: < code > isBalanced("[][[[[][][[[]]]]]]")</ code > should return true.
testString: assert(isBalanced(testCases[2]), '< code > isBalanced("[][[[[][][[[]]]]]]")< / code > should return true.');
- text: < code > isBalanced("][")</ code > should return true.
testString: assert(!isBalanced(testCases[3]), '< code > isBalanced("][")< / code > should return true.');
- text: < code > isBalanced("[[[]]]][[]")</ code > should return true.
testString: assert(!isBalanced(testCases[4]), '< code > isBalanced("[[[]]]][[]")< / code > should return true.');
- text: < code > isBalanced("][[]")</ code > should return true.
testString: assert(!isBalanced(testCases[5]), '< code > isBalanced("][[]")< / code > should return true.');
- text: < code > isBalanced("][[][]][[[]]")</ code > should return true.
testString: assert(!isBalanced(testCases[6]), '< code > isBalanced("][[][]][[[]]")< / code > should return true.');
- text: < code > isBalanced("[[][]]][")</ code > should return true.
testString: assert(!isBalanced(testCases[7]), '< code > isBalanced("[[][]]][")< / code > should return true.');
- text: < code > isBalanced("[[[]]][[]]]][][[")</ code > should return true.
testString: assert(!isBalanced(testCases[8]), '< code > isBalanced("[[[]]][[]]]][][[")< / code > should return true.');
- text: < code > isBalanced("[]][[]]][[[[][]]")</ code > should return true.
testString: assert(!isBalanced(testCases[9]), '< code > isBalanced("[]][[]]][[[[][]]")< / code > should return true.');
- text: < code > isBalanced("][]][[][")</ code > should return true.
testString: assert(!isBalanced(testCases[10]), '< code > isBalanced("][]][[][")< / code > should return true.');
- text: < code > isBalanced("[[]][[][]]")</ code > should return true.
testString: assert(isBalanced(testCases[11]), '< code > isBalanced("[[]][[][]]")< / code > should return true.');
- text: < code > isBalanced("[[]]")</ code > should return true.
testString: assert(isBalanced(testCases[12]), '< code > isBalanced("[[]]")< / code > should return true.');
- text: < code > isBalanced("]][]][[]][[[")</ code > should return true.
testString: assert(!isBalanced(testCases[13]), '< code > isBalanced("]][]][[]][[[")< / code > should return true.');
- text: < code > isBalanced("][]][][[")</ code > should return true.
testString: assert(!isBalanced(testCases[14]), '< code > isBalanced("][]][][[")< / code > should return true.');
- text: < code > isBalanced("][][")</ code > should return true.
testString: assert(!isBalanced(testCases[15]), '< code > isBalanced("][][")< / code > should return true.');
- text: < code > isBalanced("[[]]][][][[]][")</ code > should return true.
testString: assert(!isBalanced(testCases[16]), '< code > isBalanced("[[]]][][][[]][")< / code > should return true.');
2018-10-04 13:37:37 +00:00
- text: < code > isBalanced("")</ code > should return true.
2018-10-20 18:02:47 +00:00
testString: assert(isBalanced(testCases[17]), '< code > isBalanced("")< / code > should return true.');
2018-10-04 13:37:37 +00:00
```
< / section >
## Challenge Seed
< section id = 'challengeSeed' >
< div id = 'js-seed' >
```js
2019-02-26 08:07:07 +00:00
function isBalanced(str) {
2018-10-04 13:37:37 +00:00
// Good luck!
return true;
}
```
< / div >
### After Test
< div id = 'js-teardown' >
```js
2018-10-20 18:02:47 +00:00
const testCases = [
'[]',
']][[[][][][]][',
'[][[[[][][[[]]]]]]',
'][',
'[[[]]]][[]',
'][[]',
'][[][]][[[]]',
'[[][]]][',
'[[[]]][[]]]][][[',
'[]][[]]][[[[][]]',
'][]][[][',
'[[]][[][]]',
'[[]]',
']][]][[]][[[',
'][]][][[',
'][][',
'[[]]][][][[]][',
''
];
2018-10-04 13:37:37 +00:00
```
< / div >
< / section >
## Solution
< section id = 'solution' >
```js
2019-02-26 08:07:07 +00:00
function isBalanced(str) {
2018-10-20 18:02:47 +00:00
if (str === '') return true;
2018-10-04 13:37:37 +00:00
let a = str;
let b;
do {
b = a;
2018-10-20 18:02:47 +00:00
a = a.replace(/\[\]/g, '');
2018-10-04 13:37:37 +00:00
} while (a !== b);
return !a;
}
```
< / section >