我正在寻找具有模仿python词典的友好API的后缀树实现:
import SubstringDict
d = SubstringDict.SubstringDict()
d['foobar'] = 1
d['barfoo'] = 2
d['forget'] = 3
d['arfbag'] = 4
d['a']
>>> [1, 2, 4]
d['arf']
>>> [2, 4]
d['oo']
>>> [1, 2]
d['food']
>>> []
我从这个网站上采用了这个例子:Suffix Trees in Python 您可能会问:“为什么不使用网站上的实现?” 好吧,显然它在python绑定中有一些内存泄漏,所以我不能将它用于我的大型(120万字符串,大约200 MB)数据集。
我对使用以下API的C ++实现(我可以自己编写python绑定)感到满意:
SuffixTree<int> sf = SuffixTrie<int>();
sf['foobar'] = 1;
sf['barfoo'] = 2;
sf['forget'] = 3;
assetTrue(sf.find('a')==std::vector<int>({1,2}))
任何提示?