【发布时间】:2020-03-27 13:16:09
【问题描述】:
我编写了我的 Trie 解决方案,其中我使用了 defaultdict。任务是找到所有带前缀的单词。 格式必须类似于 {of:[of, offten,进攻]}
这是我的 Trie 类:
from collections import defaultdict
def _trie():
return defaultdict(_trie)
TERMINAL = None
class Trie(object):
def __init__(self):
self.trie = _trie()
def addWord(self, word):
trie = self.trie
for letter in word:
trie = trie[letter]
trie[TERMINAL]
def search(self, word, trie=None):
if trie is None:
trie = self.trie
for i, letter in enumerate(word):
if letter in trie:
trie = trie[letter]
else:
return False
return trie
这里是例子:
Trie = Trie()
Trie.addWord('of')
Trie.addWord('often')
Trie.addWord('offensive')
string = 'of'
s = dict(Trie.search(string))
【问题讨论】:
-
写一个函数lookup(trie, prefix),它在一个单词的开头返回一个字典(dict)对“word:frequency”。例如,“of”键应返回 of,经常,攻击性等词。