指定字母寻找所有可能的单词

问题描述:

如draw something游戏中,玩家会针对给定的单词绘画;另一边的玩家则会根据给定的N个字母来猜测出字母数为M的单词。例如,给定12个字母a b b c d d g ……,让你猜测字母数为7的单词。

要求:在没有其他前提的情况下,根据字典中的单词给出所有可能的单词集合。(字典的数据结构可自行定义)

 

解答:

1)拿到问题,我的第一想法就是针对字典来建立课trie tree(字典树),然后对与给定的N个单词,通过此trie tree来寻找所有可能的情况。

比如上面的例子,我就需要先寻找a开头的单词,再继续寻找后面可能跟着b c d之类的单词。

 

2)方案2,针对字典,我先将拥有相同字母的单词分组,比如abc、bac都分到按字母续排列的abc组中。这样我的字典的数据结构就变成的一个hash。hash的索引是单词的字母增续字符串,值为这些字母的所有可能单词集合。

回到问题中,对于给定的N个字母,我先求出C(N,M)种组合,每个组合去字典hash中去寻找其集合,得到最终我想要的结果。此时的时间复杂度应该是在常数的范围内。

posted on 2012-05-03 15:24  aho  阅读(1170)  评论(0编辑  收藏  举报

导航