数字 n
代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
解答:
private int number; private List<String> result; public List<String> generateParenthesis1(int n) { if (n == 0) { return Collections.emptyList(); } number = n; result = new ArrayList<String>(); generateParenthesis("", 0, 0); return result; } private void generateParenthesis(String str, int leftCount, int rightCount) { if (leftCount > number || rightCount > number) { return; } if (leftCount == number && rightCount == number) { result.add(str); } if (leftCount >= rightCount) { // 左括号数量>=右括号数量 generateParenthesis(str + "(", leftCount + 1, rightCount); generateParenthesis(str + ")", leftCount, rightCount + 1); } }