Trie算法查询

Trie algorithm query

我正在研究一个简单的问题,即构建没有 space 和标点符号的句子。所以它需要字典来查找是否存在这样的词。例如。下面是我如何使用字典在 python 中创建 trie 的示例。

Trie = {o: {on: {one: ""}}}

现在我的问题是,"on" 和 "one" 都是有效的词,在上面的问题中我总是选择最长的匹配,因此不会考虑 "on" 词但是如果我想写这样的代码我该怎么做?就像如果键的值不是另一个字典那么它是一个单词但是对于 "on" 键将是另一个包含更长单词的字典,这里是它的 "one"。我不能让 "on" 指向 "' 并同时指向另一个字典!

某处有问题,也许有另一个算法可以解决这个问题。 Link 资源对我来说没问题

引入一个特殊的键,意味着父节点可以被认为是叶节点。 说 '$END$' 是我的特殊键。我的 trie 看起来像:

Trie = {o: {on: {one: "", "$END$": ""}}}

然后你可以检查字典是否为空或者是否包含特殊键。