内容介绍
1 题目
2 解析
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return string字符串ArrayList
*/
ArrayList<String> ret = new ArrayList<>();
public ArrayList<String> generateParenthesis (int n) {
// write code here
StringBuilder s = new StringBuilder();
backTacing(0, 0, n, s);
return ret;
}
public void backTacing(int left, int right, int n, StringBuilder s){
if(left == n && right == n){
// 注意在递归的过程中只有一个s对象,所以要用new string方法将合适的s保存
ret.add(new String(s));
return;
}
// 当左括号的数量小于n的时间可以进入语句继续往下递归
if(left < n){
backTacing(left + 1, right, n, s.append("("));
s.deleteCharAt(s.length() - 1);
}
// 注意右括号的数量必须小于左括号的数量
if(right < n && right < left){
backTacing(left, right + 1, n, s.append(")"));
s.deleteCharAt(s.length() - 1);
}
}
}