22. Generate Parentheses
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:
[ "((()))", "(()())", "(())()", "()(())", "()()()"]
1 /** 2 * @param {number} n 3 * @return {string[]} 4 */ 5 var generateParenthesis = function(n) { 6 7 var res = []; 8 9 10 // n == 011 if(n == 0){12 return res;13 }14 15 //n == 1;16 if(n == 1){17 18 res.push("()");19 return res;20 }21 22 23 24 25 //首先你会发现开头一定是"(",结尾一定是")";26 27 //还有一个明显的规律是 一定先有 "(" 再有")",也就是说,在没有到最后一个")"之前,"("的数目比右括号多28 29 30 31 32 function innergenerateParenthesis(str,l,r,n){33 34 if(str.length == n*2){35 36 res.push(str);37 return;38 }39 40 if(l < n){41 42 43 innergenerateParenthesis(str+"(",l+1,r,n);44 45 }46 47 if(r < l){48 49 50 innergenerateParenthesis(str+")",l,r+1,n);51 52 } 53 54 }55 56 57 innergenerateParenthesis("",0,0,n);58 59 60 return res;61 62 };