2012-07-14 59 views
3

我们如何才能实现在移动中使用的字典? (当我们在手机中输入消息时使用)。因为它显示了可以用输入的字符形成的单词列表。如何实现T9字典?

示例:

4663可以是好的,没有了,回家。

467它显示建议的单词很重要。

+0

这功课吗?如果是这样,请相应标记。 – hytriutucx 2012-07-14 08:55:39

回答

3

简单溶液。将预 - 计算的话,并建立一个字典树树中的节点具有数字和每个叶节点将不得不链表/阵列的链路(或一些其它数据结构)可以使用这些数字形成的字符串。

在任何给定的点上,例如用户输入4663 - >去找不是空的最后一个节点(例子中的数字3)的所有孩子,通过各种路径到达叶节点并打印有效的话。

注意:由于位数的数量仅为10,因此树的大小将受到限制。三元搜索树(TST)也可以代替树树,但在这里,但由于只有10位数字,所以使用TST我不会有太大的优势。

编辑 - 正如用户1168577指出的那样,使用启发式使用频率,可以按照该顺序显示单词。

+0

这是一个不好的解决方案。你只能给你**所有以给定前缀开头的单词** - 可能有成千上万个单词 - 你将如何选择最佳匹配并提出建议?我认为这是OP之后的事情。 – amit 2012-07-14 09:02:00

+4

@amit - 我不同意。特里是一个好开始。一旦你得到一个前缀,任何以该前缀开头的字典单词都有资格显示。基于一些启发法,即使用频率,可以显示单词。 – user1168577 2012-07-14 09:10:07

+0

@ user1168577:是的,在这种情况下,您提到的启发式方法将是一个很好的方法。 – Rndm 2012-07-14 09:12:47