package problems.easy; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; /** * Created by sherxon on 5/5/17. */ public class GenerateParenthesis { public static void main(String[] args) { System.out.println(generateParenthesis(3)); } static public List<String> generateParenthesis(int n) { char[] a=new char[n*2]; for(int i=0; i<a.length-1; i+=2){ a[i]='('; a[i+1]=')'; } Set<String> set=new HashSet<>(); generate(a, set, 0); return new ArrayList<>(set); } static void generate(char[] a, Set<String> set, int n){ if(n == a.length-1){ set.add(new String(a)); }else if(a[n] == ')'){ for(int i=n; i<a.length; i++){ if(a[i] != a[n] || i==n){ char temp=a[i]; a[i]=a[n]; a[n]=temp; generate(a, set, n+1); temp=a[i]; a[i]=a[n]; a[n]=temp; } } }else { generate(a, set, n+1); } } }