A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何向阳 中级黑马   /  2012-12-16 09:50  /  1407 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

给定一个字符串,包含了空格等标点符号,要你计算出出现次数最多的字母和该字母出现的次数。

2 个回复

倒序浏览
此题的思路理解为
遍历字符串,使用charAt(int index)方法。
因为要计算每个字符出现的次序,所以我推荐放到一个储存不重复集合中去,所以选择了HashMap  ,通过键值对,出现的字符设置为键值唯一不重复,第一次出现该字符创建一个该字符的键,值为1,若不是第一次出现,值+1.
最后遍历集合,找到最大值,求出它所对应的key与value。
具体代码我写写看,希望能帮到你!{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
昨天忘记做了,今天来补上


  1. import java.util.Iterator;
  2. import java.util.Map;
  3. import java.util.Set;
  4. import java.util.TreeMap;

  5. public class Demo5 {

  6.         /**
  7.          *
  8.          * 给定一个字符串,包含了空格等标点符号,要你计算出出现次数最多的字母和该字母出现的次数。
  9.          */
  10.         public static void main(String[] args) {
  11.                 TreeMap<Character,Integer> hm=new TreeMap<Character,Integer>();//构造一个有序集合TreeMap
  12.                 String str="asdjkasojd8 asd,./';'][[':::lmcsuijhwiodasfhjkbg";
  13.                 int leng=str.length();                                         //避免每次for循环计算字符串长度
  14.                 for(int i=0;i<leng;i++){                                                                           //遍历字符串
  15.                         char key=str.charAt(i);
  16.                         Integer value=hm.get(key);
  17.                         if(value==null){                                                                                        //如果该字符没有出现,将值value设置为1
  18.                                 hm.put(key,1);                                                                                        //自动装箱为Character与Integer
  19.                         }else{
  20.                                 value++;
  21.                                 hm.put(key,value);                                                                                //键所对应的值+1
  22.                         }
  23.                 }
  24.                
  25.                 //将所有出现的字符存入TreeMap后,开始便利TreeMap查找字符最多出现的次数
  26.                 Set<Map.Entry<Character, Integer>> set=hm.entrySet();
  27.                 Iterator<Map.Entry<Character, Integer>> it=set.iterator();
  28.                 int maxValue = 0;                                                                                                //初始化最大键
  29.                 char maxKey = 0 ;                                                                                                //初始化最大值
  30.                 while(it.hasNext()){                                                                                        //遍历TreeMap查找最大键值对
  31.                         Map.Entry<Character, Integer> me=it.next();
  32.                         char key=me.getKey();
  33.                         int value=me.getValue();
  34.                         if(value>=maxValue){
  35.                                 maxValue=value;
  36.                                 maxKey=key;
  37.                         }               
  38.                         System.out.println(key+"出现"+value+"次");                                        //输出个个字符出现的次数
  39.                 }
  40.                 System.out.println("最多出现的字符时"+maxKey + ",它出现的次数为" + maxValue);//输出最大键值对
  41.         }

  42. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马