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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wk843620202 中级黑马   /  2015-4-28 16:16  /  800 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

提示: 该帖被管理员或版主屏蔽

7 个回复

倒序浏览
这个老师讲过的啊。。
回复 使用道具 举报
  1. package day0428;

  2. import java.util.Comparator;
  3. import java.util.Set;
  4. import java.util.TreeMap;

  5. /*
  6. * 取出一个字符串中字母出现的次数。
  7. * 如:字符串:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)...
  8. */
  9. public class Collection_11 {
  10.         public static void main(String[] args) {
  11.                 //创建一个TreeMap集合,key位放字符,value放出现的次数
  12.                 TreeMap<Character,Integer> tm= new TreeMap<Character, Integer>();
  13.                 String s="abcdekka27qoq";
  14.                 char[] chs=s.toCharArray();
  15.                 //遍历数组,判断集合中是否含数组中的元素,不含,放入集合;含元素,key不变,value加1
  16.                 for(char ch: chs){
  17.                         Integer in= tm.get(ch);
  18.                         if(in==null){
  19.                                 tm.put(ch,1);
  20.                                 }
  21.                         else{
  22.                                 in++;
  23.                                 tm.put(ch, in);
  24.                         }
  25.                 }
  26.                 // 拼接集合中key位和value位的元素
  27.                 StringBuffer sb= new StringBuffer();
  28.                 Set<Character> set= tm.keySet();
  29.                 for(Character key: set){
  30.                         Integer i= tm.get(key);
  31.                         sb.append(key).append("(").append(i).append(")");
  32.                 }
  33.                 System.out.println(sb.toString());
  34.         }
  35. }
复制代码
回复 使用道具 举报
用Map集合功能可以很方便的做这种题目,用其他的像数组和ArrayList集合也可以解决,只是逻辑很麻烦.这就是Java语言的强大啊!!
回复 使用道具 举报
这是基础班的吗?
回复 使用道具 举报
map 解决比较方便
回复 使用道具 举报
  1. public static void main(String[] args) {
  2.                 String str = "abcdekka27qoq";
  3.                
  4.                 //把字符串转换成字符数组
  5.                 char[] buf = str.toCharArray();
  6.                
  7.                 //创建StringBuilder对象用来添加要输出的字符串
  8.                 StringBuilder sb = new StringBuilder();
  9.                 //遍历字符数组
  10.                 for(int i = 0;i<buf.length;i++){
  11.                        
  12.                         //定义count用来记录字符出现的次数
  13.                         int count = 0;               
  14.                        
  15.                         //先判断sb中是否已有该字符,如果没有,则添加                       
  16.                         String mark = buf[i]+"";
  17.                         if(sb.indexOf(mark)<0){
  18.                                
  19.                                 //遍历字符数组,确定buf[i]出现的次数
  20.                                 for(int j = i;j<buf.length;j++){
  21.                                         if(buf[i] == buf[j]){
  22.                                                 count++;
  23.                                         }
  24.                                 }
  25.                                 sb.append(mark+"("+count+")");
  26.                         }
  27.                 }
  28.                 System.out.println(sb);
  29.         }
复制代码
回复 使用道具 举报
Amu 中级黑马 2015-6-7 22:20:31
8#
其实代码上加上对字母的判断最佳
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马