【发布时间】:2019-11-19 14:54:16
【问题描述】:
假设我们有一个唯一单词列表和一个子字符串。
我正在寻找一种最佳算法,它返回包含子字符串的单词。
一般的应用是:给定一个数据库,使用搜索栏过滤结果。
一个简单的 Python 实现:
def search_bar(words, substring):
ret = []
for word in words:
if substring in word:
ret.append(word)
return ret
words = ["abc", "bcd", "thon", "Python"]
substring = "on"
search_bar(words, substring)
这将返回:
["thon", "Python"]
及时O(lenght_of_list * complexity_of_in),其中complexity_of_in在某种程度上取决于子字符串的长度和单个单词的长度。
我要问的是是否有更快的实施。鉴于我们可以将列表预处理为我们想要的任何结构。
只是重定向到问题/答案会很棒。
注意:这种结构最好不要花太长时间来添加一个新词。但主要是它不必像 Python 示例那样添加任何东西。
另外,我不确定这个问题的标签...
【问题讨论】: