22. Generate Parentheses(生成括號)
阿新 • • 發佈:2018-12-23
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:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]題目大意:給定一個整數n,求出n對括號所有合理的組合形式。例如,給定n=3,則所有合理的組成形式為上述5種。解題思路:遞迴,每次傳遞的引數為:括號數n,當前已有的左括號數left,當前已有的右括號數right,當前的括號組成字串s。引數初始分別為:n,0,0,""。
class Solution { List<String> res = null; public void generate(int n, int left, int right, String s) { if (left + right == 2 * n) { res.add(s); return; } if (left < n) { generate(n, left + 1, right, s + "("); if (right < left) { generate(n, left, right + 1, s + ")"); } } else { generate(n, left, right + 1, s + ")"); } } public List<String> generateParenthesis(int n) { res = new ArrayList<>(); generate(n, 0, 0, ""); return res; } }