给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合
例如,给出 n = 3,生成结果为:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
function generateParents(n) {
const res = []
function generate(cur, left, right) {
if (left === 0 && right === 0) {
res.push(cur)
return
}
if (left > right) {
return
}
if (left > 0) {
generate(cur + '(', left - 1, right)
}
if (right > 0) {
generate(cur + ')', left, right - 1)
}
}
generate('', n, n)
return res
}
console.log(generateParents(3))
console.log(generateParents(2))
console.log(generateParents(4))
