问题:给定一个文件,包含1亿个字符串,输出其中重复的字符串和重复次数。
解法:
采用一个函数将字符串映射为整数(类似hash())。
遍历字符串,根据映射值,放到某个文件(每个文件有一个映射值区间),这样重复的字符串必定在同一个文件中;
遍历各个文件:使用map计算重复数,输出重复数>2的;
for each string {
int i = hash(s);
j = i/10000;
put s into file:j;
}
for each file {
statistic each string;
}