【问题标题】:Given string and (list) of words, return words that contain string (optimal algorithm)给定字符串和(列表)单词,返回包含字符串的单词(最优算法)
【发布时间】: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 示例那样添加任何东西。

另外,我不确定这个问题的标签...

【问题讨论】:

    标签: python regex


    【解决方案1】:

    也许用

    word.find(substring) 
    

    改为

    substring in word
    

    作为变体:

    def search_bar(words, substring):
        return list(filter(lambda word: word.find(substring)!=-1, words))
    

    【讨论】:

      猜你喜欢
      • 2017-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 2020-03-04
      • 2019-03-14
      • 1970-01-01
      相关资源
      最近更新 更多