请教:n个字符串中重复次数最多的前m个字符串的高效算法

chaosllgao 2007-10-16 10:13:15
n个字符串,其中有重复的,求重复次数最多的前m个字符串,要求输出这m个字符串及其出现次数
...全文
303 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chaosllgao 2007-10-18
  • 打赏
  • 举报
回复
字符串数量1 000 000,长度在1-255之间不等,最大可用内存512M以内,要求内存使用尽可能少。

virusplayer提出的方法可以统计各字符串出现的次数,但是通过hashtable再获取重复次数前m的字符串没有比较好的算法。如果获取重复次数前m的字符串每次都要便利hashtable的话,时间复杂度将达到O(nm)
virusswb 2007-10-17
  • 打赏
  • 举报
回复
用一个hashtable纪录每个字符串出现的次数好了
oo 2007-10-17
  • 打赏
  • 举报
回复
看你的字符串有多少,数量不一样,适合的算法也不一样。
还有你可用的内存有多少?

如果数量很多,可以分桶,比如aa开头的一个桶,ab开头的一个桶,...
具体用多少个桶取决于你的字符串数量和可用的内存
chaosllgao 2007-10-16
  • 打赏
  • 举报
回复
回答eggs_cn的问题,字符串可长可短,长度在1-255之间。

例如:
abcd, ab, a, abcd, ab, ab, ab, cd, cd, cd
这样的一个字符串集合,重复次数最多的前2个子串为
ab 4次
cd 3次
eggs_cn 2007-10-16
  • 打赏
  • 举报
回复
出现次数最多的不就是单个的字母啊,算不算字符串啊?请楼主说明啊...

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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