今天面试的一道算法题,求解

LAST_MAN 2012-06-08 02:50:18
有10G 的日志文件 存储格式为 [cmd:from:abc@163.com,to:123@qq.com]
设计一个算法,求出由163域发出的邮件,接受最多的前50个域
如 abc@163.com 发到 123@qq.com 如果QQ邮箱接受是前50多的,则显示出来,并且显示有多少条是从163到QQ的

我想到的是用multimap容器来存储信息~~

求解答
...全文
248 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mc913 2012-06-13
  • 打赏
  • 举报
回复
map<接收域名,数量>。扫描完结果就出来了。
qq120848369 2012-06-13
  • 打赏
  • 举报
回复
O(n),扫一遍, 关键是不要做重复扫描:

1, 边扫边收集, 将(From:username@163 ,To:username@some_domain)的信息收集到一个some domain的一个容器中.
2, 扫完之后, 根据每个容器的尺寸从小到大排序, 然后前50个容器就是结果,每个容器里之前存储了(From:username@163 ,To:username@some_domain)的信息。
sl51314240 2012-06-13
  • 打赏
  • 举报
回复
你这格式是固定的吗??你那存储格式是固定的一行还是二进制?你的[]是格式的一部分吗?

字符串解析用sscanf,格式用"cnd:form:%s@%s,to:%s@%s", a1, a2, a3, a4
a2和a4就是163和qq

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧