C++ 实现T9文本预测
我在内存中有一个T9字典(trie/hash_映射)。词典包含单词分级对,因此当从词典中选取单词时,其分级会增加,单词分级对在单词列表中会上升 假设有一种方法可以从字典中选择一个单词。该方法还可以执行一些单词评级例行程序 在输入中,我有一串数字(1-9,“*”来改变单词,还有“”),它们是在电话上按下的 问题:C++ 实现T9文本预测,c++,data-structures,string-parsing,trie,t9,C++,Data Structures,String Parsing,Trie,T9,我在内存中有一个T9字典(trie/hash_映射)。词典包含单词分级对,因此当从词典中选取单词时,其分级会增加,单词分级对在单词列表中会上升 假设有一种方法可以从字典中选择一个单词。该方法还可以执行一些单词评级例行程序 在输入中,我有一串数字(1-9,“*”来改变单词,还有“”),它们是在电话上按下的 问题: 有没有快速解析字符串的算法 哪种数据结构最好 UPD: (问题D) 我认为特别有效的一个选项是将trie预处理为修改后的结构,该结构专门为基于击键预测单词而优化 直观地说,新的结构是一
我认为特别有效的一个选项是将trie预处理为修改后的结构,该结构专门为基于击键预测单词而优化 直观地说,新的结构是一个trie,它由可以在任意点按下的可能数字创建。然后,每个trie节点存储一个单词优先级队列,这些单词可能会使用这些数字拼写出来。然后,您可以通过以下算法预测要使用的单词:
- 从trie的根开始
- 对于每个数字,跟随对应于该数字的指针
- 如果你离开了trie,那么就没有任何建议可提了
- 否则,请查看优先级队列中可以由这些数字组成的单词,然后建议优先级队列中使用计数最高的元素
希望这有帮助 你能把你的两个问题再充实一点吗?“解析字符串的算法”是什么意思?解析什么文本格式,转换成什么数据结构?至于问题2,您希望在哪里引入数据结构?在解析输入之前,我们已经在内存中有了字典,数据结构被引入并用单词填充。我们需要将按下的数字字符串转换为消息。类似的问题:我尝试了这个数据结构,但没有帮助。我的问题似乎是字符串解析。完整的问题文本在(问题D)中。这里是我的解决方案:(hash_map/vector)(Trie)@scrat-你应该把它作为一个后续问题发布,因为我现在没有足够的时间在这里正确地解决这个问题。另外,您是否可以尝试确定代码的哪一部分不起作用?在该代码上执行了十几个测试。其中一个测试超过了1秒的时间限制。@scrat-请尝试找到一个最小的测试用例,并将其作为单独的问题发布。仅仅说“它在某些测试中失败了”就几乎不能提供出什么问题的信息。如果您可以编写自己的测试来显示失败,然后尝试将问题降至失败代码中的特定函数,那么我们可以尝试提供帮助。我很乐意就算法提供一般性建议,但我不想为您调试程序。