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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qq835122642 中级黑马   /  2016-4-4 12:55  /  550 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,
* 输出格式为:a(2)b(1)k(2)...

7 个回复

倒序浏览
        思路:
*                 1.需要知道每个字符出现的次数,就要对每个字符进行遍历.
*                 2.如何对遍历出来的字符和对应出现的次数进行存储呢?就需要map集合.
*                 3.这里一个问题就是,如何把每个字符出现的最完美的次数装入map中呢?
*                 就需要通过一个判断,如果这个字符不存在,就将key以及对于value存入.
*                 (如果已经存在,说明这个字符遍历的已经不是最大的value值了)
*                 4.当这个map集合把元素都存入之后,再通过EntrySet()将这个关系对遍历出来.然后再分别获取key和value.最后打印.
回复 使用道具 举报
来学习的
回复 使用道具 举报
                /*
                 * 取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,
                 * 输出格式为:a(2)b(1)k(2)...
                 * 分析:
                 * 1.用map来实现,将字符串存入Key,次数存入Value
                 * 2.对Map进行遍历输出
                 */
                String s1 = "abcdekka27qoq";
                //创建HashMap存储
                TreeMap<Character, Integer> tm = new TreeMap<>();
                //得到字符数组
                char[] arr = s1.toCharArray();
                for (char c : arr) {
                        //如果不包含这个键
                        if(!tm.containsKey(c)){
                                tm.put(c, 1);
                        }else{
                                tm.put(c, tm.get(c)+1);
                        }
                }
                //得到TreeMap的keySet
                Set<Character> keySet = tm.keySet();
                //先输出英文
                for (Character c1 : keySet) {
                        if(c1>=65){
                        System.out.print(c1 +"("+ tm.get(c1) + ")");
                        }
                }
                //再输出数字
                for (Character c1 : keySet) {
                        if(c1<65){
                        System.out.print(c1 +"("+ tm.get(c1) + ")");
                        }
                }
回复 使用道具 举报
hardeas 发表于 2016-4-4 13:50
/*
                 * 取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,
                 * 输出格式为:a(2)b(1)k( ...

C1>=65是什么意思啊。请指教
回复 使用道具 举报
LLQALLQ 发表于 2016-4-4 15:05
C1>=65是什么意思啊。请指教

65在ASCII码表中表示的是A哟
回复 使用道具 举报
哦哦。。。。
回复 使用道具 举报
受教了   谢谢    给你10000个赞   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马