获取一字符串中,每一个字符出现的次数。
2013-11-01 20:16
531 查看
题目:已知字符串"fdgavcbsacdfs", 获取该字符串中,每一个字母出现的次数。
要求打印结果是:a(2)b(1)...;
1.程序分析: 对于结果的分析发现,字母和数字之间存在这映射关系,而且这种关系很多,很多就需要存储,而能存储映射关系的容器有数组和Map结合。关系和方式是无序的,故选择Map,又发现保持着顺序a,b,c.....,所以这个集合最终应该存储的是字母和次数的存储关系。
1、因为操作的是字符,所以先将字符串转换为字符数组。2、遍历字符数组,用每一个字母作为键去查找map集合,如果该字母键不存在,则将该字母作为键和1作为值存进map集合。如果该字母键存在,则把该字母对应值+1,然后以该字母为键,重新存入map集合,键会覆盖,遍历结束,则map集合就记录了所有字母出现的次数。
运行结果:
a(1)b(1)c(2)d(3)f(4)g(1)s(5)v(1)
要求打印结果是:a(2)b(1)...;
1.程序分析: 对于结果的分析发现,字母和数字之间存在这映射关系,而且这种关系很多,很多就需要存储,而能存储映射关系的容器有数组和Map结合。关系和方式是无序的,故选择Map,又发现保持着顺序a,b,c.....,所以这个集合最终应该存储的是字母和次数的存储关系。
1、因为操作的是字符,所以先将字符串转换为字符数组。2、遍历字符数组,用每一个字母作为键去查找map集合,如果该字母键不存在,则将该字母作为键和1作为值存进map集合。如果该字母键存在,则把该字母对应值+1,然后以该字母为键,重新存入map集合,键会覆盖,遍历结束,则map集合就记录了所有字母出现的次数。
package temp; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; public class MapTest { public static void main(String[] args) { String s="fdgavcbsacdfs"; chaCount(s); } public static void chaCount(String s) { char []arr=s.toCharArray(); int value=0; Map<Character,Integer> map=new TreeMap<Character, Integer>(); for (int i = 0; i < arr.length; i++) { if(map.get(arr[i])==null) map.put(arr[i], value+1); else map.put(arr[i], ++value); } StringBuilder ab=new StringBuilder(); for(Iterator<Character> it=map.keySet().iterator();it.hasNext();) { Character ch=it.next(); Integer in=map.get(ch); ab.append(ch+"("+in+")"); } System.out.println(ab); } }
运行结果:
a(1)b(1)c(2)d(3)f(4)g(1)s(5)v(1)
相关文章推荐
- TinyOS 无线发射问题(一)
- (1)字符串全排列 / 组合
- unity3d LitJson 各种嵌套
- 第一次来,mark一下
- 神奇的勺子
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
- HDU4474_Yet Another Multiple Problem
- vs 窗体继承
- android Message类源代码解析
- Deque
- 搞定面试官
- 一个2013届毕业生(踏上IT行业)的迷茫(5)
- Visual c++ 项目开发案例 全程实录 源代码
- 查询长事务SQL
- 用OpenGL实现DDA画线算法
- 一个2013届毕业生(踏上IT行业)的迷茫(5)
- zoj 3658(坑坑坑!)
- 3D模型动画技术 - 皮肤变形计算(skinned meshes)
- cocos2dx一个场景添加多个层
- 一个2013届毕业生(踏上IT行业)的迷茫(4)