递归嘛
只有左括号比右括号数目多的时候才这一位才能是 () 否则只能是 (
注意也要保持 左右的数量都大于0 才可以添加
当到最后的时候左右都用完 res添加
import java.util.*; public class Solution { /** * * @param n int整型 * @return string字符串ArrayList */ public ArrayList<String> generateParenthesis (int n) { ArrayList<String> result = new ArrayList<>(); backtrack("",n,n,result); return result; } private void backtrack(String string, int left, int right, List<String> result) { if(left == 0 && right ==0){ result.add(string); return; } if(left == right){ backtrack(string+'(',--left,right,result); } else{ if(left >=1) backtrack(string+'(',left-1,right,result); if(right >=1) backtrack(string+')',left,right-1,result); } } }