思路:回溯
class Solution {
public List<String> generateParenthesis(int n) {
List<String> res = new ArrayList<String>();
if(n<=0) return res;//返回空的结果集
dfs(n,"",res,0,0);
return res;
}
//path:把路径拼接到字符串中
//res:把每一条路径放到结果集
//open:左括号的数量 close:右括号的数量
private void dfs(int n, String path, List<String> res,int open,int close){
if(open>n || close>open){
return;
}
if(path.length() == 2*n){
res.add(path);
return;
}
//不断的dfs,先选择"("
dfs(n,path+"(",res,open+1,close);
dfs(n,path+")",res,open,close+1);
}
}