从一千万条短信中找出重复次数最多的前10条
2015-08-04 20:53
537 查看
题目:
有1千万条短信,有重复,以文本文件的形式保存,一行一条。请用5分钟时间,找出重复出现最多的前10条。
struct TNode
{
BYTE* pText;
//直接指向文件映射的内存地址
DWORD dwCount;
//计算器,记录此节点的相同短信数
TNode* ChildNodes[256];
//子节点数据,由于一个字母的ASCII值不可能超过256,所以子节点也不可能超过256
TNode()
{
//初始化成员
}
~TNode()
{
//释放资源
}
};
//int nIndex 是字母下标
void CreateChildNode(TNode* pNode, const BYTE* pText, int nIndex)
{
if (pNode->ChildNodes[pText[nIndex]] == NULL)
{
//如果不存在此子节点,就创建.TNode构造函数//应该有初始化代码
//为了处理方便,这里也可以在创建的同时把此节点加到一个数组中
pNode->ChildNodes[pText[nIndex]] = new TNode;
}
if (pText[nIndex + 1] == '\0')
{
//此短信已完成,计数器加1,并保存此短信内容
pNode->ChildNodes[pText[nIndex]]->dwCount++;
pNode->ChildNodes[pText[nIndex]]->pText = pText;
}
else
{
//if(pText[nIndex]!='\0')如果还未结束,就创建下一级节点
CreateNode(pNode->ChildNodes[pText[nIndex]], pText, nIndex + 1);
}
}
//创建根节点,pTexts是短信数组,dwCount是短信数量//1千万
void CreateRootNode(const BYTE** pTexts, DWORD dwCount)
{
TNode RootNode;
for (DWORD dwIndex = 0; dwIndex < dwCount, dwIndex++)
{
CreateNode(&RootNode, pTexts[dwIndex], 0);
}
//所有结点按dwCount的值进行排序
//取前10个节点,显示结果
}
相关文章推荐
- 关于iOS Address Book编程指南
- 多线程中的互锁现象
- 监听套接字 连接套接字
- [MetaHook] R_RicochetSprite
- HDU 5327 Olympiad (多校)
- Document
- c# -- 对象销毁和垃圾回收
- POJ - 1847Tram最短路
- adb无法识别魅族note2
- Contest 4 1002 Problem Killer【等差等比数列】
- linux MySQL相关问题
- errorPage跳转问题
- [LeetCode]228.Summary Ranges
- UI Overview
- 新浪微博Redis应用经验--总结自InfoQ
- Zookeeper节点类型
- java大数用法
- Tomcat开发Servlet之NoClassFoundException解决方法
- Hadoop之集群设置
- 使用原始套接字实现数据包捕获