【发布时间】:2020-04-22 17:21:46
【问题描述】:
我目前正在使用此堆栈溢出帖子中的 trie 实现:
Getting a list of words from a Trie
返回与给定前缀匹配的单词列表。然后我使用正则表达式过滤掉不符合整个指定模式的单词。
EX:如果我要搜索的模式是:CH??S?这是与我的初始前缀匹配的字典子集: {CHABAD、CHACHA、战车、CHATTED、Cheater、CHOMSKY、CHANNEL CHAFED、CHAFER、链条、椅子、奶酪、CHEESY CHRONO、CHUTES、凿子}
我会搜索带有“CH”前缀的特里树,然后过滤掉与我想要的 CH??S? 模式匹配的单词。 (奶酪,奶酪,凿子)并归还那些。
我想知道是否有更快的方法来避免在最后一步中使用正则表达式。我以为我可以使用后缀树 (Ukkonen's suffix tree algorithm in plain English) 或 boyer-moore 算法,但两者都不起作用,因为它们搜索的是后缀而不是模式。
【问题讨论】:
-
你能把你的前缀搜索变成后缀搜索吗?对于
CH??S?,搜索CH??,然后搜索所有这些加上S?。
标签: java string data-structures pattern-matching trie