求教!读取字母并统计各字母数量的程序,用什么数据结构效率最高?!

neo325 2011-05-11 08:50:20
如题,要求从一个文件中读取一些字母和符号:a b c D e ! f。。。。

然后统计并输出每个字母出现了多少次。


望各位高手请不吝赐教啊!

我用的是java,小弟初学者,高手勿见笑~

现在我考虑的几种数据结构是 AVL树,hashtable等

请问有没有更高效的数据结构?

另外,如何解决对unicode 和 asc 文件都奏效?
...全文
193 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanathappy 2011-05-15
  • 打赏
  • 举报
回复
最简单的就是 string.Split 按第一个字母 拆分成数组 判断个数就简单了
在去掉第一个字母 用string.Concat 合并数组 然后在拆在和
在这个 循环里面判断下长度不要数组越界就好了
fulima007 2011-05-14
  • 打赏
  • 举报
回复

[Quote=引用 4 楼 superdullwolf 的回复:]
字母和符号,统计并输出每个字母出现了多少次,有没有更高效的数据结构?

有,就是数组。255长度就够了,因为只是字母和符号,没有中文。
有中文,65536长度就够了。

把字符根据AScii码,对应的元素++,就可以了。
最简单的桶的道理。
[/Quote]
顶,用hash应该挺快的吧
lemonlinger 2011-05-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 superdullwolf 的回复:]
字母和符号,统计并输出每个字母出现了多少次,有没有更高效的数据结构?

有,就是数组。255长度就够了,因为只是字母和符号,没有中文。
有中文,65536长度就够了。

把字符根据AScii码,对应的元素++,就可以了。
最简单的桶的道理。
[/Quote]
这应该是效率最高的算法了。。。
w251988889 2011-05-14
  • 打赏
  • 举报
回复
假设b代表0.则a[0]=n 表示b出现n次
w251988889 2011-05-14
  • 打赏
  • 举报
回复
直接木桶法就行了..因为字母大小写一共就54个..开辟个a[54]={0}..就行了..
然后就是自己根据ASCII.让字母与0到54对应.
ryfdizuo 2011-05-13
  • 打赏
  • 举报
回复
桶原理,类似图像处理中的 直方图 原理、
lhy 2011-05-13
  • 打赏
  • 举报
回复
四楼的最好,基本不需要寻址计算。
davidcoffee 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 superdullwolf 的回复:]

字母和符号,统计并输出每个字母出现了多少次,有没有更高效的数据结构?

有,就是数组。255长度就够了,因为只是字母和符号,没有中文。
有中文,65536长度就够了。

把字符根据AScii码,对应的元素++,就可以了。
最简单的桶的道理。
[/Quote]学习了~
xiaoxiaofengqi 2011-05-13
  • 打赏
  • 举报
回复
顶4楼
fanyongpeng11 2011-05-12
  • 打赏
  • 举报
回复
4楼的方法最好,数组的才是最快滴。。。。。
qq675927952 2011-05-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 superdullwolf 的回复:]
string.toCahrArray()
得到的Char就是编码。
[/Quote]

LS 正解.......
nanyou521 2011-05-12
  • 打赏
  • 举报
回复
这个用二叉搜索树比较好吧
超级大笨狼 2011-05-12
  • 打赏
  • 举报
回复
string.toCahrArray()
得到的Char就是编码。
超级大笨狼 2011-05-12
  • 打赏
  • 举报
回复
字母和符号,统计并输出每个字母出现了多少次,有没有更高效的数据结构?

有,就是数组。255长度就够了,因为只是字母和符号,没有中文。
有中文,65536长度就够了。

把字符根据AScii码,对应的元素++,就可以了。
最简单的桶的道理。
neo325 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mougaidong 的回复:]
没有不兼容ASC的编码集,这个可以放心。
再者,你这个情况用TreeMap就足以慢去要求了,hash不一定就比map快。只有在键的个数很庞大的时候,它才优于Map
[/Quote]

但是如果选择unicode文档来读取的话,结果会出现错误
turing-complete 2011-05-11
  • 打赏
  • 举报
回复
没有不兼容ASC的编码集,这个可以放心。
再者,你这个情况用TreeMap就足以慢去要求了,hash不一定就比map快。只有在键的个数很庞大的时候,它才优于Map
tian_dao_chou_qin 2011-05-11
  • 打赏
  • 举报
回复

在java里直接用hash表比较好吧

33,010

社区成员

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

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