【490、有一个 8G 大的文本文件,存的字符串,你只有 2G的内存,找出重复的字符串以及出现的次数】

103 阅读1分钟

思路如下:

  1. 将 8G 的文本文件分成若干个小文件,每个文件大小不超过 2G,可以使用外部排序算法,将文本文件分成若干个有序的小文件。
  2. 对每个小文件进行遍历,使用哈希表来统计每个字符串出现的次数,如果哈希表的内存超过了 2G,可以使用分块的方法来处理,将哈希表分成若干个小块,每个小块不超过 2G。
  3. 将每个小文件的哈希表合并成一个总的哈希表,使用哈希函数来将相同的字符串分到同一个桶中,统计出现次数。
  4. 如果最终的哈希表仍然无法放入内存,可以使用分块的方法来处理,将哈希表分成若干个小块,每个小块不超过 2G。
  5. 输出重复的字符串以及出现的次数。

这种方法可以处理较大的文本文件,但需要比较多的时间和计算资源。