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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目: 已有字符串str1="sdfg,hellozx,sdfcv-waadfa,fsasdfxcvdf"
         *
         * 键盘输入任意字符串,例如:String str2="HaHahello01",
         *
         * 在原来字符串str1中去掉str2中最大的交集字符串(hello)后, 获取该字符串str1中的每个字母出现的次数。
         *
         * 例如:去掉hello后
         *
         * 以这种方式打印:按字母出现次数排序,次数相同时,按字母从大到小排序!
         *
         * 输出:f(出现6次)d(出现5次)s(出现4次)x(出现2次)v(出现2次)c(出现2次)w(出现1次)g(出现1次)
  1.                 String str1="sdfg,hellozx,sdfcv-waadfa,fsasdfxcvdf";
  2.                 String str2="HaHahello01";
  3.                
  4.                 //构造str1的字符集合
  5.                 char[] chs1 = str1.toCharArray();
  6.                 Collection<Character> c1 = new ArrayList<Character>();
  7.                 for(char ch : chs1)
  8.                         c1.add(ch);
  9.                 System.out.println(c1);
  10.                 //构造str2的字符集合
  11.                 char[] chs2 = str2.toCharArray();
  12.                 Collection<Character> c2 = new ArrayList<Character>();
  13.                 for(char ch : chs2)
  14.                         c2.add(ch);
  15.                 //System.out.println(c2);
  16.                 //求差集
  17.                 c1.removeAll(c2);
  18.                 //System.out.println(c1.size());
  19.                
  20.                 //向hashMap中存,并记数
  21.                 Map<Character,Integer> map = new HashMap<Character,Integer>();
  22.                 Integer value;
  23.                 for(Character ch : c1)
  24.                 {        
  25.                         if(!(ch>=97 && ch<=122 || ch>=65 && ch<=90))
  26.                                 continue;
  27.                         value = map.get(ch);
  28.                         if(null==value)
  29.                                 value=0;
  30.                         map.put(ch, ++value);
  31.                 }
  32.                
  33.                 Set<Map.Entry<Character,Integer>> set = new TreeSet<Map.Entry<Character,Integer>>(new Comparator<Map.Entry<Character,Integer>>(){

  34.                         @Override
  35.                         public int compare(Entry<Character, Integer> o1,
  36.                                         Entry<Character, Integer> o2)
  37.                         {
  38.                                 Character ch1 = o1.getKey();
  39.                                 Integer cnt1 = o1.getValue();
  40.                                 Character ch2 = o2.getKey();
  41.                                 Integer cnt2 = o2.getValue();
  42.                                 int rv = cnt2.compareTo(cnt1);
  43.                                 if(0 != rv) return rv;
  44.                                 return ch2.compareTo(ch1);
  45.                         }});
  46.                
  47.                 for(Map.Entry<Character,Integer> entry : map.entrySet())
  48.                 {
  49.                         set.add(entry);
  50.                 }
  51.                 //System.out.println(set.size());
  52.                 StringBuilder sb = new StringBuilder();
  53.                 for(Entry<Character,Integer> entry : set)
  54.                 {
  55.                         Character ch = entry.getKey();
  56.                         Integer cnt = entry.getValue();
  57.                         sb.append(ch).append("(出现了").append(cnt).append("次)");
  58.                 }
  59.                 System.out.println(sb.toString());
复制代码

2 个回复

倒序浏览
新手,学习啦、、、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马