【题目】
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); } } }
时间: 2024-10-14 13:04:24