求字符串中出现次数最多的字符及其出现次数
2014-10-02 21:22
399 查看
问题描述如下:一个字符串中可能包含a-z中的多个字符,如字符串String str="abcdabffeabcccdd",求出现次数最多的字符及其出现次数,如有多个重复的则都列出。
import java.util.HashMap; import java.util.Map; import java.util.TreeMap; /* * 找出字符串中出现次数最多字符及次数:使用Map存储 */ public class FrequencyOfChar { public static void main(String[] args) { String str="aavzcadaaaaavvvvvvv"; Map<Character,Integer> mapOfFrequency=getFrequencyOfChar(str); System.out.println(mapOfFrequency); Map<Character,Integer> mapOfMaxFrequency=getMaxFrequencyOfChar(mapOfFrequency); System.out.println(mapOfMaxFrequency); } /** * 得到字符串中字符的出现次数 */ public static Map<Character,Integer> getFrequencyOfChar(String str){ Map<Character,Integer> mapOfFrequency=new HashMap<Character,Integer>(); char[] charArrayOfStr=str.toCharArray(); for(char ch:charArrayOfStr){ if(mapOfFrequency.get(ch)==null){//该字符第一次出现 mapOfFrequency.put(ch,1); }else{//该字符已出现过 mapOfFrequency.put(ch, mapOfFrequency.get(ch)+1);//出现次数加1 } } return mapOfFrequency; } /** * 得到出现次数最多的字符及出现次数的Map */ public static Map<Character,Integer> getMaxFrequencyOfChar(Map<Character,Integer> mapOfFrequency){ Map<Character,Integer> maxFrequencyOfChar=new TreeMap<Character,Integer>(); //循环遍历map,保存出现次数最大的 int num=0;//保存最大的出现次数 for(Character ch:mapOfFrequency.keySet()){ System.out.println(maxFrequencyOfChar); if(num==0){//访问第一个字符 num=mapOfFrequency.get(ch); maxFrequencyOfChar.put(ch, num);//将第一条映射加入 } else{ if(mapOfFrequency.get(ch)>num){//当前字符的出现次数大于之前最大出现次数 num=mapOfFrequency.get(ch); maxFrequencyOfChar.clear(); maxFrequencyOfChar.put(ch,mapOfFrequency.get(ch)); } else if(mapOfFrequency.get(ch).equals(num)){//当前字符的出现次数等于之前最大出现次数 System.out.println(); maxFrequencyOfChar.put(ch,mapOfFrequency.get(ch)); } } } return maxFrequencyOfChar; } }
相关文章推荐
- 查找出字符串中出现最多的字符及其出现的次数
- 查找出字符串中出现最多的字符及其出现的次数
- 查找出字符串中出现最多的字符及其出现的次数
- 遍历一次字符串,选择出在该字符串中出现次数最多的字符及其出现次数(Java)
- Java实现给定任一字符串,长度为任意,要求找出其出现次数最多的字符及其出现次数。
- Java统计字符串中出现次数最多的字符及其次数
- php中计算未知长度的字符串哪个字符出现的次数最多的代码
- 字符串中出现次数最多的字符算法
- java一个算法题:输出一个字符串中出现次数最多的字符,以及次数
- 字符串中出现次数最多的字符
- 给出一个字符串(不带空格),找出字符串当中出现次数最多的字符?
- 用js实现统计字符串里面的出现次数最多的字符
- c#面试题:找出字符串中出现次数最多的字符及出现次数
- 一个字符串str="fsdafdsaf" 任意个字符,求出这个字符串中出现次数最多的字符和出现的次数
- 求一字符串出现次数最多的字符,asm
- 将一个字符串中出现次数最多的字符找出来
- 求字符串中出现最多的字符和出现的次数
- 程序员面试指南(第六章) 数组和字符串(C#版) 1. 找出字符串中出现次数最多的字符及出现次数
- 搜索出字符串中出现次数最多的字符,并统计次数
- 查找一个字符串里,出现次数最多的字符,时间复杂度O(n)