有可以下载java的字典吗?
其他人已经回答了这个问题......也许你不只是在谈论一个字典文件而是关于一个拼写检查器?
我希望有一个程序,它需要一些随机字母,并通过检查它们是否可以重新排列成一个真正的单词
那是不同的.你想要多快这么快?字典中有多少单词,有多少单词,你要检查多长?
如果你想要一个拼写检查器(你的问题并不完全清楚),Jazzy是一个Java拼写检查程序,可以链接到很多字典.这还不错,但是各种实现都非常低效(对于小字典来说这是好的,但是当你有几十万个单词时,这是一个惊人的浪费).
现在,如果您只是想解决您描述的具体问题,您可以:
解析字典文件并创建地图:( 按排序顺序排列的字母,匹配单词的集合)
那么对于任意数量的随机字母:对它们进行排序,看看你是否在地图中有一个条目(如果你输入的值包含你可以用这些字母做的所有单词).
abracadabra:(aaaaabbcdrr,(abracadabra))
carthorse :( acehorrst,(carthorse))
管弦乐队:( acehorrst,(carthorse,orchestra))
等等...
现在你拿三个随机字母并获得"hsotrerca",你将它们排序为"acehorrst",并用它作为关键,你得到所有(有效的)字谜......
这是有效的,因为你所描述的是一个特殊的(简单)案例:你需要的只是对你的字母进行排序,然后使用O(1)地图查找.
为了进行更复杂的拼写检查,可能存在错误,那么你需要一些东西来提出"候选人"(可能是正确但拼错的词)[比如说,使用soundex,metaphone或双metaphone algos]和然后使用诸如Levenhstein编辑距离算法之类的东西来检查候选人与已知的好词(或者由Levenhstein编辑距离组成的更复杂的树,Google将其用于"在您键入时查找"):
http://en.wikipedia.org/wiki/Levenshtein_distance
作为一个有趣的旁注,优化的字典表示可以存储数百甚至数百万字,每个字不到10比特(是的,你已经正确读过:每个字少于10比特)并且允许非常快速的查找.
| 归档时间: |
|
| 查看次数: |
1421 次 |
| 最近记录: |