已解决:我要问的是已解决,但请随时用其他方法回答。这是解读者用答案制作的字母。项目页面
我目前是一名 AP 计算机科学专业的学生。我一直在研究一个字母解扰器,它可以在字典中读取并打印输入字母集时可能出现的单词列表。为此,我制作了一张地图,Map<String,Set<String>>
其中将在“aerht”键下和相应的集合中输入“earth”。
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
我遇到的问题是,一些键值没有被检查,因为目前我接受了一组数字并将字符按字母顺序排列,例如 earth->aehrt 但这会跳过诸如 aht->hat 或 eht 之类的组合 -> .
所以基本上我的问题是如何简化获取包含在这样一个键中的所有字母组合的过程。例如 earth-> aehrt,a,ae,aeh,aehr,ah,ahr,ahrt,aer,aert 等等,这样我就可以将所有这些键与我读过的字典中的键进行交叉引用。字母 [] 包含 a,e ,h,r,t 的顺序。另外,test 是一个 Set 的 ArrayList。关键是“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);
}