package com.anuragkapur.misc; import java.util.ArrayList; import java.util.List; /** * @author: anuragkapur * @since: 11/05/2014 */ public class PermutationsOfStringSet { public static List<String> permutations(String stringSets[]) { if(stringSets.length == 0) { return null; } else if(stringSets.length == 1) { List<String> permutations = new ArrayList<>(1); permutations.add(stringSets[0]); return permutations; } else { List<String> permutations = new ArrayList<>(); for (int i=0; i<stringSets.length; i++) { String base = stringSets[i]; // create stringSubSets by removing base string String stringSubSets[] = new String[stringSets.length-1]; int indexInSubsSets = 0; for (int j=0; j<stringSets.length; j++) { if(i!=j) { stringSubSets[indexInSubsSets] = stringSets[j]; indexInSubsSets ++; } } List<String> subSetsPermutations = permutations(stringSubSets); for (String subSetsPermutation : subSetsPermutations) { permutations.add(base + " " + subSetsPermutation); } } return permutations; } } public static void main(String[] args) { String question = "a b c"; List<String> permutations = permutations(question.split(" ")); for (String permutation : permutations) { System.out.println(permutation); } } }