黑马程序员技术交流社区

标题: 分享一道入学测试题 [打印本页]

作者: wk843620202    时间: 2015-4-28 16:16
提示: 该帖被管理员或版主屏蔽
作者: 1017161726    时间: 2015-4-28 16:49
这个老师讲过的啊。。
作者: showdy    时间: 2015-4-28 22:24
  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. }
复制代码

作者: pizhihui    时间: 2015-6-7 11:11
用Map集合功能可以很方便的做这种题目,用其他的像数组和ArrayList集合也可以解决,只是逻辑很麻烦.这就是Java语言的强大啊!!
作者: 悦鹏    时间: 2015-6-7 11:45
这是基础班的吗?
作者: 路途遥远    时间: 2015-6-7 12:47
map 解决比较方便
作者: edithe    时间: 2015-6-7 13:14
  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
其实代码上加上对字母的判断最佳




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