数字 n 代表生成括号的对数,生成所有可能的并且有效的括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"]
/**
* 有效括号
* 1:n对括号就有n个左括号,n个右括号
* 2.在保证字符串有效性的前提下,在添加右括号时,左括号数必须要大于右括号数
*/
var generateParenthesis = function(n) {
let res = []
getFun(0, 0, '', n, res)
return res
};
function getFun(lc, rc, str, n, arr) {
if (rc > lc || lc > n || rc > n) return false
if (lc == rc && rc == n) {
arr.push(str)
} else {
getFun(lc + 1, rc, str + '(', n, arr)
getFun(lc, rc + 1, str + ')', n, arr)
}
}