I am currently an AP Computer Science student. I have been working on a letter unscrambler that reads in a dictionary and prints a list of words possible with the letter set inputted. To this end I make a map with Map<String,Set<String>> in which "earth" would be entered under the key "aerht" and in the corresponding set.
Example How Would I generate all of these:
CAKE -> ACEK
A C E K
AC CE EK
ACE CEK
ACEK
AE CK
AEK
ACK
AK
The problem I am running into is that that some key values aren't being checked as currently I take in a set of numbers and alphabetize the characters eg earth->aehrt yet this skips combos such as aht->hat or eht -> the.
So basically my Question would be how to simplify the process of obtaining all alphabetical combos contained in such a key. eg earth-> aehrt,a,ae,aeh,aehr,ah,ahr,ahrt,aer,aert and so on so that I can crossreference all these keys with those in the dictionary I read in. letters[] contains a,e,h,r,t in order. Also, test is an ArrayList of Set. Key is "aehrt".
for(int z = 0; z<key.length();z++) {
Set<String> temp = new HashSet<String>();
//s1 = t*s0 ∪ {t} ∪ s0 = {t}
for(String str: test.get(z)) //t*s0
str+=letters[z];
test.get(z).add(letters[z]); //{t}
test.get(z).addAll(test.get(z-1));//s0
test.get(z).addAll(temp);
}