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$": ""}}}
然后你可以检查字典是否为空或者是否包含特殊键。
我正在研究一个简单的问题,即构建没有 space 和标点符号的句子。所以它需要字典来查找是否存在这样的词。例如。下面是我如何使用字典在 python 中创建 trie 的示例。
Trie = {o: {on: {one: ""}}}
现在我的问题是,"on" 和 "one" 都是有效的词,在上面的问题中我总是选择最长的匹配,因此不会考虑 "on" 词但是如果我想写这样的代码我该怎么做?就像如果键的值不是另一个字典那么它是一个单词但是对于 "on" 键将是另一个包含更长单词的字典,这里是它的 "one"。我不能让 "on" 指向 "' 并同时指向另一个字典!
某处有问题,也许有另一个算法可以解决这个问题。 Link 资源对我来说没问题
引入一个特殊的键,意味着父节点可以被认为是叶节点。
说 '$END$'
是我的特殊键。我的 trie 看起来像:
Trie = {o: {on: {one: "", "$END$": ""}}}
然后你可以检查字典是否为空或者是否包含特殊键。