21 括號生成(LeetCode HOT 100)
阿新 • • 發佈:2022-04-10
描述:
數字 n 代表生成括號的對數,請你設計一個函式,用於能夠生成所有可能的並且 有效的 括號組合。
示例 1:
輸入:n = 3
輸出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
輸入:n = 1
輸出:["()"]
提示:
1 <= n <= 8
Soulution:
public static List<String> generateParenthesis(int n) { List<String> result = new ArrayList<>(); nextChar(n, n, result, ""); return result; } public static void nextChar(int ln, int rn, List<String> result, String str) { if (ln == 0) { while (rn > 0) { --rn; str = str + ")"; } result.add(str); return; } if (rn > ln) { // 避免走向錯誤分支 nextChar(ln, (rn - 1), result, str + ")"); } nextChar((ln - 1), rn, result, str + "("); }
Idea:
回溯思想。
相似題目:17 電話號碼的字母組合
Reslut: