【LeetCode】Generate Parentheses 解題報告
阿新 • • 發佈:2019-01-05
【題目】
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
【思路】
自然而然地相當遞迴。不知有沒有非遞迴的解法,簡單查了一下網上也都是這種解法。
【Java程式碼】
public class Solution { private List<String> list = new ArrayList<String>(); public List<String> generateParenthesis(int n) { run("", n, 0); return list; } // l 為剩餘左括號數,r為剩餘未匹配的右括號數目 public void run(String str, int l, int r) { if (l == 0 && r == 0) { list.add(str); return; } if (l > 0) { String s = str + "("; run(s, l-1, r+1); } if (r > 0) { String s = str + ")"; run(s, l, r-1); } } }