背景
我正在设计一个将文本从一种语言转换为另一种语言的应用程序。例如,输入文本hello
将转换为指定的语言文本。这是通过为每种语言提供查找表来完成的。转换算法包括以下步骤。
hello
将成为模式。如果找到任何匹配项,请停止处理并返回匹配项。h
,第二 - he
,第三 - hel
等等。匹配的令牌将保存在临时缓冲区中,并在没有更多匹配时返回。这类似于最大蒙克规则。此算法必须多次迭代输入文本,并导致二次复杂度。我试图通过在树结构中安排查找表来优化它(非常类似于后缀树)。如果有h
,hel
,lo
的查找文字,则会将其组织为
root
--h
----hel
--lo
这有助于我避免不必要的查找。匹配h
后,只有h
节点有子节点时才需要转到下一个字符。这大大减少了迭代次数。
问题
有什么想法......?
答案 0 :(得分:2)
三元搜索树可能就是你所说的。它类似于特里,但从我理解的空间效率更高。
答案 1 :(得分:1)
查看'Trie'数据结构。
为什么不使用Lucene以非常快的方式索引文本,甚至更多 - 索引包括算法
等等。