作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试在给定 6 个字母的 iphone 上创建这个应用程序,它会输出所有可能的 3-6 个字母的英文单词。我已经有字典了,我只是想知道怎么做。
我四处搜索,只找到了 python 中的拼字游戏求解器或那些单词搜索网格解决方案。
我认为蛮力搜索可以,但我担心性能。代码不是必需的,算法的链接或算法本身就可以了,我想一旦我得到它就可以管理。
谢谢!
最佳答案
如果您关心性能,此方法可能会奏效。它涉及一些预处理,但允许近乎即时地查找字谜。
创建一个将字符串键映射到字符串列表的数据结构(我更熟悉 Java,所以在这种情况下它将是 Map<String,List<String>>
)这将存储您的字典。
定义一个函数,它接受一个字符串并输出按字母顺序排列的相同字母。例如,hello
会变成ehllo
; kitchen
会变成cehiknt
.我将此函数称为 keyify(word)
这是预处理部分:对于字典中的每个项目,找到该项目的键 (keyify(item)
) 的列表并将该项目添加到列表中。
当需要查找给定单词的变位词时,只需在 keyify
中查找列表即可。的那个词。例如,如果输入是 kitchen
, keyify
将是 cehiknt
,并在您的 map 中查找应该会生成一个包含 kitchen
的列表, chicken
以及我忘记的任何其他厨房字谜:P
关于Objective-C 乱码求解器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6838988/
我是一名优秀的程序员,十分优秀!