我必须在包含文件的目录中搜索给定的文件名(比如说Keyword)。如果只搜索很少的关键字,我可以使用常规搜索(比如创建一个驻留在指定目录中的文件名数组,然后使用给定的关键字搜索每个文件名)。由于我需要动态搜索大量关键字,因此使用常规搜索效率不高。我有几个想法:
1.使用散列(但不清楚如何设计)
2.使用Bloom过滤器进行搜索(请谷歌,如果你不知道它,它的工作非常有趣!):使用布隆过滤器的问题是“假阳性是可能的,但是假阴性不是”。我可能会错过一些结果......
答案 0 :(得分:1)
在搜索之前,请创建所有正面匹配的trie。
创建trie将取O(n),其中n是单词数。
要搜索,请尝试将该字符与特里匹配。查找在O(m)中完成,其中m是要查找的单词的长度。
总运行时间:O(n + nm)=> O(nm)找到所有单词。