c - 从电话数字键盘按字母顺序搜索

标签 c algorithm nlp state-machine iphone-keypad

我正在实现基于电话键盘的字母搜索,例如电话键盘 1

当用户键入 2 时,我会在组合中得到 {A, B, C}。当用户键入 23 时,我会在组合中得到 {AD、AE、AF、BD、BE、BF、CD、CE、CF},等等。如果我继续打字并进行组合,我会得到数千种组合,这会使搜索过程变得非常缓慢。所以现在我想实现一个算法来删除不合逻辑的组合,比如 CF BD CD,我的意思是逻辑上没有人的名字以这些组合开头,也许是两个没有元音的辅音。所以我想通过这种方式缩小搜索范围。有人知道用 C 语言实现的这种状态机吗?

最佳答案

你可以构建一个 trie基于您正在搜索的数据集的有效前缀。将部分输入与之匹配应该非常容易。

关于c - 从电话数字键盘按字母顺序搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15632148/

相关文章:

c - 如何从 C 中的指针获取数组的大小?

c - 如何确保我正在启动的程序将其标准输出写入我打开的 FD?

java - 自定义比较器,用于对州、县和邮政编码列表进行排序

machine-learning - 增加训练示例会降低最大熵分类器的准确性

python - 如何猜测以某种方式生成的句子列表的语法?

python - NLTK ConllCorpusReader 中的 NE 标签

c - 如何执行 shell 脚本或可执行文件?

c - 如何使用 PSoC 5LP 芯片的 SPI 写入 SD 卡?

python - 如何使这个列表反转算法更高效 python

c - 分析 C 程序 - Time Shell 命令