我正在尝试寻找一种算法,以在大型二进制缓冲区(100 MB)中搜索固定大小(64位)的二进制字符串。缓冲区始终是相同的,我要搜索的字符串很多(也许2 ^ 500)。 我必须找到任何给定字符串的所有出现,而不仅仅是第一个。
我可以选择哪种算法?也许受益于我在其中搜索的常量缓冲区之一。
赞赏此类算法的C源代码链接。
答案 0 :(得分:2)
假设您的字符串是8位对齐的,那么从100MB缓冲区中,您将获得1亿个不同的字符串,这些字符串可以按大约(O(1))的访问时间放入哈希表中,大小约为800MB。
这将使您能够尽快进行搜索,因为一旦有了8字节的字符串,您便会立即知道在缓冲区中看到该字符串的位置。