从java中的乱码中形成一个单词

时间:2011-02-24 05:57:17

标签: scramble

我正在做一个游戏项目,我们必须用给定的字母组动态地形成单词...给定的字母组也可能包含重复...同时形成单词我们可以使用给定的字母任意次数的字母集(比如两次或三次)...帮助我使用算法从给定的集合中形成所有可能有意义的单词

谢谢大家

2 个答案:

答案 0 :(得分:0)

简单的方法是创建每个可能的字母顺序,然后将它们中的每一个与您的字典进行比较。

通过将字典存储在便于快速查找的数据结构中,您可以稍微改进它。 (哈希表,树等)我一直想实现一个28-ary树来快速字典访问,但​​还没有解决它。

答案 1 :(得分:0)

我在许多月前为填字游戏解决方案做过类似的事情。我基本上拿了一个字典文件并修改它看起来像:

aardvark:aaadkrr
albatross:aablorsst

然后,对于给定的一组字母,我可以对它们进行排序并使用类似的东西:

grep ':{sorted letters}$' mywords.txt | sed 's/:.*$//'

这会给我候选词。

如果你正在寻找可以使用少于完整集合的单词,你将不得不包围一些排列/组合代码,但给出的算法非常有效。

对于Java,我考虑在内存中维护哈希表(假设你有空间)或使用外部数据库,其中查找键是排序的变量,当然,允许重复,因为porerope都来自eorp

虽然我的基于grep的解决方案适用于我自己的目的,但您可能不希望在强大的应用程序中依赖外部工具和子流程。