Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
left和right分别代表当前还有多少左括号,多少右括号,当递归到某种情况时,左括号的数目大于右括号,说明当前str中一定存在左右括号不匹配的情况,因此就结束本次递归,当left==right就把str放入数组里
/**
* @param {number} n
* @return {string[]}
*/
var generateParenthesis = function(n) {
var arr = [];
find(n, n, '', arr);
return arr;
};
function find(left, right, str, arr){
if(left > right) return ;
else if(left == 0 && right == 0) arr.push(str);
else {
if(left > 0) find(left - 1, right, str + '(', arr);
if(right > 0) find(left, right - 1, str + ')', arr);
}
//console.log(str);
}