generate-parentheses
/**
*
* @author gentleKay
* Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
* For example, given n = 3, a solution set is:
* "((()))", "(()())", "(())()", "()(())", "()()()"
*
* 给定n对括号,编写一个函数来生成格式良好的括号的所有组合。
* 例如,给定n=3,解集为:
* "((()))", "(()())", "(())()", "()(())", "()()()"
*/
import java.util.ArrayList; /** * * @author gentleKay * Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. * For example, given n = 3, a solution set is: * "((()))", "(()())", "(())()", "()(())", "()()()" * * 给定n对括号,编写一个函数来生成格式良好的括号的所有组合。 * 例如,给定n=3,解集为: * "((()))", "(()())", "(())()", "()(())", "()()()" */ public class Main30 { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(Main30.generateParenthesis(3)); } public static ArrayList<String> generateParenthesis(int n) { ArrayList<String> list = new ArrayList<>(); String str = ""; generate(list, n, n,str); return list; } public static void generate(ArrayList<String> list, int left, int right, String str) { if (left == 0 && right == 0) { list.add(str); return ; } if (left > 0) { generate(list, left-1,right, str+'('); } if (right > left) { generate(list,left,right-1, str+')'); } } }