【发布时间】:2013-07-14 08:01:29
【问题描述】:
我有一个哈希值。这个哈希有一个字典。我需要在其中找到所有具有相同根的匹配项。例如,我有:
#<Trie:0x00000001bf9a40 @root={
"m"=>{"a"=>{"x"=>{
:end=>true,
"i"=>{"m"=>{
:end=>true,
"i"=>{"m"=>{"l"=>{"i"=>{"a"=>{"n"=>{:end=>true}}}}}}
}},
"w"=>{"e"=>{"l"=>{"l"=>{:end=>true}}}}
}}}
}>
还有文字"max"、"maxim"、"maximilian"、"maxwell"。如何按根获取此哈希中的所有单词?例如
t = Trie.new
t.add( .....# now we added words
t.find('max')
#result all words which begins from 'max'
t.find('maxim')
#result all words which begins from 'maxim' => maxim, maximilian
【问题讨论】:
-
没有时间得到完整的答案,但这里有一个线索可以解决找到前缀后剩下的问题:
remaining = @root["m"]["a"]["x"]。您的 find 方法当然需要以编程方式发现它。 . .这是一个递归方法的练习——你需要两个,一个用来查找,另一个用来扩展剩余的 -
第一个。我可以找到我需要的字符串。第二种递归查找其他匹配的方法有问题