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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kemeng 中级黑马   /  2015-3-20 14:18  /  851 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. /*
  2. "sdfzxcvafadfadfads"获取该字符串中的字母出现的次数
  3. 希望打印结果:a(1)c(2)...

  4. 通过结果发现,每一个字母都有对应的次数,字母和次数之间有映射关系
  5. 所以可以选择map集合,因为map集合中存放的就是映射关系

  6. 1.将字符串转换为字符数组,以为要对每一个字母进行操作。
  7. 2.定义一个map集合,因为打印结果的字母有顺序,所以使用treemap
  8. 3.遍历字符数组,将每一个字母作为键去查map集合
  9. 如果返回null,将该字母和1存入到map集合中
  10. 如果返回不是null,说明该字母在map集合已经存在并有对应次数
  11. 那么就获取该次数并进行自增,然后将该字母和自增后的次数存入到map集合中,覆盖调用原理键所对应的值
  12. 4.将map集合中的数据变成指定的字符串形式返回


  13. */
  14. import java.util.*;
  15. class Demo4
  16. {
  17.         public static void main(String[] args)
  18.         {
  19.                 System.out.println(charCount("aabbccddffrs"));
  20.         }

  21.         public static String charCount(String str)
  22.         {
  23.                 char[] chs=str.toCharArray();
  24.                 TreeMap<Character,Integer> tm=new TreeMap<Character,Integer>();
  25.                 for(int i=0;i<str.length();i++)
  26.                 {
  27.                         Integer value=tm.get(chs[i]);
  28.                         if(value==null)
  29.                         {
  30.                                 tm.put(chs[i],1);
  31.                         }
  32.                         else
  33.                         {
  34.                                 value++;
  35.                                 tm.put(chs[i],value);
  36.                         }
  37.                        
  38.                 }
  39.                 //System.out.println(tm);
  40.                
  41.                 StringBuilder sb=new StringBuilder();
  42.                 Set<Map.Entry<Character,Integer>> ss=tm.entrySet();
  43.                 Iterator<Map.Entry<Character,Integer>> it=ss.iterator();
  44.                 while(it.hasNext())
  45.                 {
  46.                         Map.Entry<Character,Integer> tr=it.next();
  47.                         Character ch=tr.getKey();
  48.                         Integer value=tr.getValue();
  49.                         sb.append(ch+"("+value+")");
  50.                 }


  51.                 return sb.toString();
  52.         }
  53. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马