package huisu; import java.util.ArrayList; import java.util.List; public class generateKuohao { /** * 括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。
思路:1.先左括号
2.左括号数量最大n
3.左比右大加右括号
4.右达到最大字符串添加进list,返回
* @param args */ public static void main(String[] args) { List<String> list=generateParenthesis(3); int x=0; } public static List<String> generateParenthesis(int n) { List<String> list=new ArrayList<>(); helper("", 0, 0, list, n); return list; } public static void helper(String s,int left,int right,List<String> list,int n){ if(right==n){ list.add(s); return; } if(left<n){ helper(s+'(',left+1,right,list,n); } if(left>right){ helper(s+')',left,right+1,list,n); } } }