Determine if a word can be constructed from list of subsets
Your getPermutations() fails to generate all permutations.  Consider…

public static void main(String[] args) {
    List&lt;String&gt; list = Arrays.asList(args);
    for (String s : getPermutations(list)) {
        System.out.println(s);
    }
}


If you run java StringFromSubSets 0 1 2 3 | sort, the result is:


0123
0132
0312
1023
1203
1230
2130
2301
2310
3012
3021
3201



There should be 4! = 24 permutations, but you have produced only 12.  For example, where is 0321?  In other words,

public static void main(String[] args) {
    // Simpler initialization than the original
    List&lt;String&gt; listOfString = Arrays.asList(new String[] {
        "sachin", "tendulkar", "rahul", "dravid"
    });
    System.out.println("Expected true, Actual " +
        stringGotFromSubSets(listOfString, "drahultendulkars"));
}


… prints Expected true, Actual false.