Created
July 20, 2018 20:14
-
-
Save domarps/8ca777d0568f1634b2c0d01caa200e4c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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