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:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
class Solution { /** * @param Integer $n * @return String[] */ function generateParenthesis($n) { $result = []; $this->helper(0, 0, $n, "", $result); return $result; } function helper($l, $r, $max, $str, &$result){ if($l + $r == $max*2){ $result[] = $str; return; } if($l < $max){ $this->helper($l+1, $r, $max, $str."(", $result); } if($r < $l){ $this->helper($l, $r+1, $max, $str.")", $result); } } }