1

我想做一个需要 WordsChecker 的安卓文字游戏。使用检查器的类似应用有:Word With Friends,Scramble With Friends,......您可以去Google Play,下载并安装该应用程序,然后尝试使用它。

目前我不知道编写类似于这些应用程序的 WordsChecker,我已经研究了一下,但有些解决方案对我来说并不好。

有人有想法么?你能帮助我吗?

4

3 回答 3

3

如果您使用 trie 数据结构(google it),则可以有效地找到单词,并且存储复数和其他时态的成本可以忽略不计。

trie 是从根节点开始的树结构。每个孩子都由一个字母索引,因此每个节点都对应到此时的单词。每个节点中的标志表明这是否是一个完整的单词。

要找到像“汽车”这样的词,从根开始,穿过 C 链接到一个节点,然后穿过 A 链接到下一个节点,然后再穿过 R 链接到下一个节点。此时,该节点被标记为一个完整的单词 (CAR),但您仍然可以通过 S 链接到达代表 CARS 的节点,该节点也被标记为一个完整的单词。

于 2012-05-10T04:10:08.507 回答
0

经过一番谷歌搜索后,我找不到执行此操作的类,但您可以做的是调用一个网站,例如 dictionary.com,并将单词作为参数的一部分。刮掉 html 并检查这个词是否真的存在。

于 2012-05-10T03:26:11.477 回答
0

我在 java 网站上找到了这本字典。我不知道它有多“好”,例如将其与“官方拼字游戏”单词表进行比较。

Trie 数据结构可能是矫枉过正。我自己还没试过。(双关语似乎是不可避免的,所以很抱歉。)您可以考虑将单词转换为数字形式(不过,字符串的 hashCodes 可能很好)并将它们存储在 hashset 中。我说 hash SET 是因为你真正需要知道的是成员资格。我所知道的测试列表成员是否存在的最快方法是尝试将其添加到 HashSet:如果失败,则它已经是成员。如果它成功了,那么它不是一个词,不要忘记删除它!

我在玩 Boggle 的各个方面时使用了这种编程策略,并用它来制作单词频率列表,给定特定的 Boggle 立方体。

If there is a structure that pertains to your search, e.g., you know you are going to be searching in a certain order, not random access, then a more structured approach like a trie makes good sense for optimization. But consider also, a turn-based word game hardly requires blazing performance! (KISS)

What grouchiness to vote the question down! I found it difficult to get traction on this problem when I was first getting into this subject, so I have some sympathy for the original poster. I'm giving the question +1 to counterbalance this.

于 2012-05-11T03:58:38.970 回答