黑马程序员技术交流社区

标题: 字符串 [打印本页]

作者: 何向阳    时间: 2012-12-16 09:50
标题: 字符串
给定一个字符串,包含了空格等标点符号,要你计算出出现次数最多的字母和该字母出现的次数。

作者: 张辉2012    时间: 2012-12-16 13:31
此题的思路理解为
遍历字符串,使用charAt(int index)方法。
因为要计算每个字符出现的次序,所以我推荐放到一个储存不重复集合中去,所以选择了HashMap  ,通过键值对,出现的字符设置为键值唯一不重复,第一次出现该字符创建一个该字符的键,值为1,若不是第一次出现,值+1.
最后遍历集合,找到最大值,求出它所对应的key与value。
具体代码我写写看,希望能帮到你!{:soso_e100:}
作者: 张辉2012    时间: 2012-12-17 19:58
昨天忘记做了,今天来补上


  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. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2