【发布时间】:2020-01-01 16:30:55
【问题描述】:
我有一个样本字典
{
'A':{
'P':{
'P':{
'L':{
'I':{
'E':{
'S':{
'*':True
}
}
},
'E':{
'S':{
'*':True
},
'*':True
}
}
},
'E':{
'*':True
}
}
}
}
这里{*:True} 表示单词的结尾。我需要找到所有可以从字典中生成的以前缀开头的单词。例如,我可以从上面的字典中生成的带有各种前缀的单词如下。
'AP' -> "APPLE", "APPLES" "APE", "APPLIES"
'APP' -> "APPLE", "APPLES", "APPLIES"
'APPLE' -> "APPLE", "APPLES"
我基本上是在尝试使用字典实现 Trie 数据结构并执行前缀搜索。我想我应该实现一些递归算法来找到所有可能的结果。我无法弄清楚如何实现它。
【问题讨论】:
-
“我没有得到正确的结果”不是很具有描述性。请展示您尝试过的方法并准确描述失败的原因。
-
@glibdud 我尝试了几种方法。但它甚至不接近我想要的。这就是我没有发布它的原因。
-
不幸的是,就目前而言,您似乎只是在要求其他人为您完成工作。它通常有助于证明您已经自己付出了一些努力。
-
'*':False会不会出现在 dict 中?如果是,这意味着什么(它和'*':True有什么区别)? -
@CristiFati 我刚刚添加它表示它是单词的结尾。如果遇到
'*',那么它就是路径的结尾。