Java中的解读字母 – 获取所有可能的字母组合
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java中的解读字母 – 获取所有可能的字母组合,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1936字,纯文字阅读大概需要3分钟。
内容图文
![Java中的解读字母 – 获取所有可能的字母组合](/upload/InfoBanner/zyjiaocheng/793/c2f664b9cbd04c1cb1ad1870e27f553d.jpg)
解决了:我问的是解决了但是可以随意用其他方法回答.
这是用解答写的字母解码器. Project Page
我目前是AP计算机科学专业的学生.我一直在研究一个字母解读器,它读取字典并打印输入字母集可能的单词列表.为此,我使用Map< String,Set< String>>制作地图.
其中“地球”将在关键字“aerht”和相应的集合中输入.
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之类的组合 – >的.
所以基本上我的问题是如何简化获得这种密钥中包含的所有字母组合的过程.例如地球 – > aehrt,一,AE,AEH,aehr啊,AHR,ahrt,爱尔兰,AERT
依此类推,以便我可以将所有这些键与我读过的字典中的那些键交叉引用.
letters []按顺序包含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);
}
解决方法:
从字母顺序键’aehrt’开始,您可以使用以下方法找到所有可能的字母组合:
>开始于:S0 = {}
>接下来,取a:S1 =a?S0∪S0∪{a} = {a}
>接下来,取e:S2 =e?S1∪S1∪{e} = {ae,a,e}
>接下来,取h:S3 =h?S2∪S2∪{h} = {aeh,ah,eh,ae,a,e,h}
>等……
一旦你有了S5(整套组合),就可以在你的地图上检查它们.
public static void main(String... args){
Set<String> set = new TreeSet<String>();
String key = "aehrt";
//S1 = c*S0 ∪ {c} ∪ S0
for(int z = 0; z < key.length();z++) {
Set<String> temp = new HashSet<String>();
char c = key.charAt(z);
for(String str: set)
temp.add(str + c); // ∪ c*S0
set.add(c+""); // ∪ {c}
set.addAll(temp); // ∪ S0
}
System.out.println(set);
}
output: [a, ae, aeh, aehr, aehrt, aeht, aer, aert, aet, ah, ahr, ahrt, aht, ar, art,
at, e, eh, ehr, ehrt, eht, er, ert, et, h, hr, hrt, ht, r, rt, t]
内容总结
以上是互联网集市为您收集整理的Java中的解读字母 – 获取所有可能的字母组合全部内容,希望文章能够帮你解决Java中的解读字母 – 获取所有可能的字母组合所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。