社区
数据结构与算法
帖子详情
如何快速找出字符串的出现频率
firePhoenix1981
2009-08-10 11:26:26
今天被面到这样一道题:假设有一数组,包含数十万个字符串,里面有一些重复出现的字符串,如何统计各字符串出现的频率,并按从大到小的顺序显示出来。我当时的回答是先进行hash,对每个桶里面的字符串构造一个查找二叉树,统计其出现次数,并且每个桶里面的单词的统计次数按照从大到小的顺序排列,排列的算法采用堆排序(相当于动态维护堆),最后对所有桶里面的统计次数做一个归并排序即可。
我的方法似乎麻烦了一点,当时感觉不是很好。不知各位有没有什么更好的方法?
...全文
411
12
打赏
收藏
如何快速找出字符串的出现频率
今天被面到这样一道题:假设有一数组,包含数十万个字符串,里面有一些重复出现的字符串,如何统计各字符串出现的频率,并按从大到小的顺序显示出来。我当时的回答是先进行hash,对每个桶里面的字符串构造一个查找二叉树,统计其出现次数,并且每个桶里面的单词的统计次数按照从大到小的顺序排列,排列的算法采用堆排序(相当于动态维护堆),最后对所有桶里面的统计次数做一个归并排序即可。 我的方法似乎麻烦了一点,当时感觉不是很好。不知各位有没有什么更好的方法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
编程农场
2009-08-18
打赏
举报
回复
采用我开发的数据结构即可实现:
请参考:http://topic.csdn.net/u/20090818/15/73cfd34b-cdfd-4e5f-9cf2-e069137cce43.html?
61140
步骤
1、先把字符串插入到有序HASH树中,统计相同键值的数量
2、以升序遍历此树即可。
e-mail:freeland007@163.com
QQ: 723273055
komai908
2009-08-14
打赏
举报
回复
map<string,int> word ; ?
黄舒颖 咸丫蛋
2009-08-11
打赏
举报
回复
可行的一种方法。
Hash+Hash
1、先进行hash,对每个字符串,统计其出现次数,最大出现次数m
2、根据出现次数放到桶里面
数组List<int> t[m]
如t[1]中记录出现次数为1的字符串。
3、直接逆向读出来就排好了序了。
[Quote=引用楼主 firephoenix1981 的回复:]
今天被面到这样一道题:假设有一数组,包含数十万个字符串,里面有一些重复出现的字符串,如何统计各字符串出现的频率,并按从大到小的顺序显示出来。我当时的回答是先进行hash,对每个桶里面的字符串构造一个查找二叉树,统计其出现次数,并且每个桶里面的单词的统计次数按照从大到小的顺序排列,排列的算法采用堆排序(相当于动态维护堆),最后对所有桶里面的统计次数做一个归并排序即可。
我的方法似乎麻烦了一点,当时感觉不是很好。不知各位有没有什么更好的方法?
[/Quote]
zb_fly
2009-08-11
打赏
举报
回复
[Quote=引用 2 楼 fancymouse 的回复:]
trie
[/Quote]
同意
firePhoenix1981
2009-08-11
打赏
举报
回复
呵呵,电面的。
单纯的二叉排序数应该没有先hash再来二叉排序树好吧,另外最后要求出出现次数从大到小的排列。TRIE以前一直没有弄明白过,至此好好看看
LeonTown
2009-08-11
打赏
举报
回复
mark
面试官有什么反映吗。。。
showjim
2009-08-11
打赏
举报
回复
[Quote=引用 4 楼 firephoenix1981 的回复:]
呵呵,电面的。
单纯的二叉排序数应该没有先hash再来二叉排序树好吧,另外最后要求出出现次数从大到小的排列。TRIE以前一直没有弄明白过,至此好好看看
[/Quote]
内存足够大的话可以用trie;否则先hash统计再桶排序.
firePhoenix1981
2009-08-11
打赏
举报
回复
我觉得面试官心里想要的就是这个答案吧
[Quote=引用 2 楼 fancymouse 的回复:]
trie
[/Quote]
firePhoenix1981
2009-08-11
打赏
举报
回复
这个方法不错,桶排序,比我的要好
[Quote=引用 6 楼 vshuang 的回复:]
可行的一种方法。
Hash+Hash
1、先进行hash,对每个字符串,统计其出现次数,最大出现次数m
2、根据出现次数放到桶里面
数组List <int> t[m]
如t[1]中记录出现次数为1的字符串。
3、直接逆向读出来就排好了序了。
引用楼主 firephoenix1981 的回复:
今天被面到这样一道题:假设有一数组,包含数十万个字符串,里面有一些重复出现的字符串,如何统计各字符串出现的频率,并按从大到小的顺序显示出来。我当时的回答是先进行hash,对每个桶里面的字符串构造一个查找二叉树,统计其出现次数,并且每个桶里面的单词的统计次数按照从大到小的顺序排列,排列的算法采用堆排序(相当于动态维护堆),最后对所有桶里面的统计次数做一个归并排序即可。
我的方法似乎麻烦了一点,当时感觉不是很好。不知各位有没有什么更好的方法?
[/Quote]
FancyMouse
2009-08-11
打赏
举报
回复
trie
勤奋的沉沦
2009-08-11
打赏
举报
回复
貌似2叉排序树可行呀。
先hash好了,然后将读到得字符串先从树里remove, 如果有则更新下节点, 没有就新加1个节点,然后插入树中, 最后用先序遍历,或者后续遍历的方式能得到1个排好序的序列
acdbxzyw
2009-08-10
打赏
举报
回复
二叉排序树。。。
C语言小程序,统计
字符串
中字符
出现
频率
,随后可以匹配替换指定字符
本小程序实现了统计
字符串
中字符
出现
频率
、搜索匹配
字符串
指定字符和替换原
字符串
中指定字符三个功能。下面将对这三个知识点进行详细的解释。 统计
字符串
中字符
出现
频率
在这个小程序中,使用了一个名为num的整型...
vfp统计
字符串
中某字符重复
出现
次数
这个任务可以通过编程实现,不仅可以应用于单个
字符串
,还可以扩展到统计数据库表中某个字段内特定字符的
出现
频率
。下面我们将详细介绍如何在VFP中进行这样的操作,并探讨相关知识点。 首先,我们要了解VFP中的基本...
查找
字符串
中
出现
重复次数最多的字符
首先,我们要明确问题的目标:给定一个
字符串
,
找出
其中
出现
频率
最高的字符。这个问题可以通过多种方法解决,例如使用哈希表(HashMap在Java中)或者数组来统计每个字符
出现
的次数,然后
找出
出现
次数最多的那个。接...
统计
字符串
中每个字符
出现
次数并排序工具
本文将介绍一种专门用于统计
字符串
中每个字符
出现
次数并进行排序的工具,它能够帮助用户
快速
了解一段文本的主要构成元素,
找出
最频繁
出现
的字符。 标题中的"统计
字符串
中每个字符
出现
次数并排序工具"是一个实用的...
字符串
字母
频率
统计.py
在完成
频率
统计后,程序需要从字典中
找出
出现
次数最多的字母。这通常涉及到将字典的键值对按照值进行排序。由于可能存在多个字母
频率
相同的情况,所以在设计排序逻辑时,还需要考虑字典序。Python中提供了内置的排序...
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章