注册 登录
编程论坛 JAVA论坛

怎么在一串长字符串中找出出现最多次数的字符?

yft508 发布于 2016-08-09 15:50, 5932 次点击
package ind.idehub.day1;

import java.util.HashMap;
import java.util.Map;

public class CountMax {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s = "hidjahgugahjjaiosdhgbh";
        Map <Character, Integer> map = new <Character, Integer> HashMap();
        int len = s.length();
        
        
        for(int i=0; i<s.length();i++) {
            Character k = s.charAt(i);
            map.put(k, (map.get(k) == null ? 1: map.get(k) + 1));
        }
        
        System.out.println(map);
        
    }
}

输出结果 : {a=3, b=1, s=1, d=2, u=1, g=3, h=5, i=2, j=3, o=1}
怎么提取出出现最多次数的字符?
4 回复
#2
砖家的谎言2016-08-09 16:25
加一次比较不就可以了
#3
yft5082016-08-09 16:58
回复 2楼 砖家的谎言
怎么比较啊,map中只能用key提取value,比较出最大的value后,怎么输出key
#4
wuxiaobo_162016-08-10 11:29
程序代码:

import java.util.*;
public class CountMax {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s = "hidjahgugahjjaiosdhgbh";
        char[] chs = s.toCharArray();
        HashMap<Character,Integer> myMap = new HashMap<Character,Integer> ();
        for(char ch : chs)
            if ( myMap.containsKey(ch))
            {
                myMap.put(ch, (myMap.get(ch) +1));
            }
            else
                myMap.put(ch,1);
         System.out.println(myMap);
        //遍历一便,找出最大值
        Integer maxValue =new Integer(0);
        Character maxKey = new Character('a');

        Set<Character> keys = myMap.keySet();
        for(Iterator<Character> it =keys.iterator();it.hasNext();)
        {   
            Character key = it.next();
            Integer value = myMap.get(key);
            if(value > maxValue)
            {
                maxKey=key;
                maxValue=value;
            }
        }
        System.out.println("max entry: " + maxKey + "..."+maxValue);
    }
}
#5
yft5082016-08-11 17:48
回复 4楼 wuxiaobo_16
赞,谢谢,看来容器的api文档还要再好好看看
1