I am trying to find all the subsets of a given String. For example, the String "Rum" would have the subsets “rum”, “ru”, “rm”, “r”, “um”, “u”, “m”,and “”. Here is my code so far:
import java.util.Collections;
import java.util.ArrayList;
import java.util.List;
public class SubsetGenerator
{
private String word;
public SubsetGenerator(String in)
{
word=in;
}
public ArrayList<String> findSubsets()
{
ArrayList<String> subsets = new ArrayList<String>();
String temp = word;
if(temp.length()==1)
{
subsets.add(temp);
return subsets;
}
else
{
String removed = temp.substring(0,1);
temp = temp.substring(1);
findSubsets();
subsets.add(word);
}
return subsets;
}
}
and here is the tester:
import java.util.Collections;
import java.util.ArrayList;
import java.util.List;
/**
This program tests the subset generator.
*/
public class SubsetGeneratorTester
{
public static void main(String[] args)
{
SubsetGenerator generator = new SubsetGenerator("rum");
List<String> subsets = generator.findSubsets();
// Sort the result for checking
Collections.sort(subsets);
System.out.println(subsets);
System.out.println("Expected: [, m, r, rm, ru, rum, u, um]");
}
}