我正在实现基于电话键盘的字母搜索,例如电话键盘 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/