内存有效搜索后缀列表

voi*_*ard 5 c algorithm data-structures

对于一个实例,有一项任务是为后缀列表构建某种字典:

[., .com., a.com., a.b.com., org., some.org., ...]
Run Code Online (Sandbox Code Playgroud)

对于每个传入的字符串,对于一个实例"test.some.org".找到构建字典中最长的后缀.存在一些内存限制.这种情况下最合适的算法/数据结构是什么?

对我来说最明显的选择是反向字符串的trie,但它似乎非常耗费内存.我试过使用后缀数组,但看起来它不适合任务.

字典是不可变的,它必须构建一次.不可变尝试的内存效率表示是否更高?

pka*_*zak 3

对于一组不可变的字符串,压缩 trie效果非常好。主要思想是将 trie 中的单个分支表示为一个节点。网络上有许多关于此方法的有用描述/论文。