Skip to content

Instantly share code, notes, and snippets.

@domarps
Created July 20, 2018 20:14
Show Gist options
  • Save domarps/8ca777d0568f1634b2c0d01caa200e4c to your computer and use it in GitHub Desktop.
Save domarps/8ca777d0568f1634b2c0d01caa200e4c to your computer and use it in GitHub Desktop.
import java.util.*;
public class GenerateSubsets {
/*
* Given a input array of size n elements find all the subsets.
*/
public static String getString(char[] subset, int subStIndex){
String res = "";
int i = 0;
while(i < subStIndex)
{
res += subset[i];
i += 1;
}
return res;
}
public static void generateSubsets(char[] arr, int start, char[] subset, Set <String> result, int subStIndex) {
if (start == arr.length) {
System.out.print(start); System.out.print(" "); System.out.print(subStIndex); System.out.print(" ");
System.out.println("Value of subset :" + new String(subset));
result.add(getString(subset, subStIndex));
return;
} else {
generateSubsets(arr, start+1, subset, result, subStIndex);
subset[subStIndex] = arr[start];
//System.out.println("Value of subset in recursion:" + new String(subset));
generateSubsets(arr, start+1, subset, result, subStIndex+1);
return;
}
}
public static void main(String [] args) {
char[] arr = {'a','b','c'};
Set <String> result = new LinkedHashSet<>();
char [] subset = new char[arr.length];
generateSubsets(arr, 0, subset, result, 0);
for(String c :result) {
System.out.println("The subsets are: " + c);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment