求字符串中出现次数最多的字符及其出现次数

来源:互联网 发布:在线表单与数据库设计 编辑:程序博客网 时间:2024/05/20 23:34
问题描述如下:一个字符串中可能包含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;}}

0 0