• 算法
    • 1.回溯法:回溯的过程是函数的进入与退出
    • 2.记录左括号和右括号的数量:
      • 当左括号数量小于n时继续添加左括号
      • 当右括号数量小于左括号时继续添加右括号
public List<String> generateParenthesis(int n) {
    ArrayList<String> result = new ArrayList<>(10);
    backtrack("", 0, 0, n, result);
    return result;
}

private void backtrack(String string, int open, int close, int n, List<String> result) {
    if (string.length() == n << 1) {
        result.add(string);
        return;
    }
    if (open < n) {
        backtrack(string+"(", open+1, close, n, result);
    }
    if (close < open) {
        backtrack(string+")", open, close+1, n, result);
    }
}