我有一个代码在哪里比较一个大数据,比如一个网页的来源与一个文件中的某些单词。什么是最好的算法?
可以有两种情况:
如果我有大量的单词要与源进行比较,在这种情况下,对于普通的字符串搜索算法,它必须采用一个单词,与数据进行比较,采取下一个并进行比较数据等等,直到一切都完成。
我在文件中只有几个单词,正常的字符串搜索就可以了,但仍需要尽可能减少时间。
什么算法最好?我知道Boyer-Moore和Rabin-Karp搜索算法。 虽然Boyer-Moore搜索看起来很快,但我还想了解其他算法的名称及其比较。
答案 0 :(得分:1)
在这两种情况下,我认为你可能想构建一个patricia trie(也称为基数树)。最重要的是,查找时间为O(k),其中k是trie中字符串的最大长度。
答案 1 :(得分:1)
请注意,Boyer-Moore将在文本中搜索文本(几个单词)。
如果你想要的只是识别一些单词,那么它就容易多了:
这最显着的意思是您将文本作为流读取,并且不需要一次将其全部保存在内存中(这对于文件光标的典型示例非常有用)。
至于字典的结构,我会推荐一个简单的哈希表。与树结构相比,它具有很好的记忆效果。