我想创建一个Android文字游戏,需要一个WordsChecker。 使用检查器的类似应用程序是:与朋友一起聊天,与朋友争抢,...您可以访问Google Play,下载&安装应用程序,然后尝试使用它。
目前我不知道编写类似于这些应用程序的WordsChecker,我已经研究了一下但是有些解决方案对我不好。
有人有什么想法吗?你能救我吗?
答案 0 :(得分:3)
如果您使用特里数据结构(谷歌),那么可以有效地找到单词,并且存储复数和其他时态的成本可以忽略不计。
trie是从根节点开始的树结构。每个孩子都被一个字母编入索引,因此每个节点都对应于到此为止的单词。每个节点中的标志表示这是否是一个完整的单词。
要找到像“cars”这样的单词,从根开始,将C链接穿过一个节点,然后将A链接交叉到下一个节点,然后将R链接到下一个节点。此时,节点被标记为完整的单词(CAR),但您仍然可以通过S链接到表示CARS的节点,该节点也被标记为完整的单词。
答案 1 :(得分:0)
经过一些谷歌搜索后,我找不到这样做的课程,但你可以做的是调用一个像dictionary.com这样的网站作为参数的一部分。抓取html并检查单词是否确实存在。
答案 2 :(得分:0)
我在java网站上找到了这个字典。我不知道它有多“好”,例如,将它与“官方拼字游戏”单词列表进行比较。
Trie数据结构可能过度。我自己还没试过。 (Pun似乎是不可避免的,很抱歉。)您可以考虑将单词转换为数字形式(尽管字符串的hashCodes可能很好)并将它们存储在hashset中。我说哈希SET,因为你真正需要知道的是会员资格。我知道测试列表成员是否存在的最快方法是尝试将其添加到HashSet:如果失败,则它已经是成员。如果成功,那就不是一个字,不要忘记删除它!
我正在使用这种编程策略,同时使用Boggle的各个方面,并使用它来制作单词频率列表,给定特定的Boggle立方体。
如果存在与您的搜索相关的结构,例如,您知道您将按特定顺序搜索,而不是随机访问,那么像trie这样的更结构化的方法对于优化很有意义。但另外考虑一下,基于回合制的文字游戏几乎不需要超强性能! (KISS)
将这个问题投下来有什么意义!当我第一次进入这个问题时,我发现很难掌握这个问题,所以我对原版海报有一些同情。我正在给出问题+1以抵消这一点。