Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một số n. Hàm sẽ trả về một mảng hiển thị tất cả các cách cân bằng n cặp ngoặc đơn.
Ví dụ, với n = 3, kết quả sẽ là:
["()()()","(())()","()(())","(()())","((()))"]
Ví dụ
Dưới đây là mã nguồn:
const res = [];
const buildcombination = (left, right, str) => {
if (left === 0 && right === 0) {
res.push(str);
}
if (left > 0) {
buildcombination(left-1, right+1, str+"(");
}
if (right > 0) {
buildcombination(left, right-1, str+")");
}
}
buildcombination(3, 0, "");
console.log(res);Kết quả
Kết quả đầu ra trong console:
[ '((()))', '(()())', '(())()', '()(())', '()()()' ]