【发布时间】:2013-07-20 10:52:18
【问题描述】:
给定一组词汇,可用于查找词汇中与给定子字符串匹配的所有单词的最佳数据结构是什么?
假设“Ap”是子字符串,
应返回“Apple”和“Application”。
由于在这种情况下,“Ap”在两个字符串的开头,我可以想到 Tries 的使用。
但是如果要匹配的子串可以在词汇表中的任何地方找到呢?
例如:如果给出“ap”,则还应返回“shape”,因为“ap”出现在“shape”中。
词汇集非常大。
【问题讨论】:
-
什么定义最好?最快的,最小的。你试过什么。您可以通过利用约束进行优化,例如不区分大小写,但没有魔杖。
-
我曾经为一个拼字游戏单词查找器做过类似的事情,但它有更多的限制需要优化,并且需要找到所有具有像 A?P 这样的模式的单词。它本质上将词汇表分解为列表字典的字典。所以我有一本包含所有带有 A 的单词的字典,其中包含一个列表字典,其中包含 A 在单词中的位置。占用了大量内存并需要一些时间来加载。
标签: data-structures pattern-matching trie