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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 明月已驻人何在 中级黑马   /  2016-11-21 22:15  /  1165 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

从控制台接受一串字符串,统计这个字符串中,每个字符出现的次数。
例如:假设键盘录入了:abc$Uabc
那么输出的结果是:a(2)b(2)c(2)$(1)%(1)5(2)
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端

9 个回复

倒序浏览
本帖最后由 zf2501 于 2016-11-21 22:45 编辑

你要是代码吗?
分析,1,将字符串转变为字符数组
2,创建TreeMap集合,键是char的包装类,我忘记怎么拼写了,值是integer
3,遍历字符数组,添加到几个的键,判断键是否存在,不存在值就是1,存在就让键加1~这里可以用三元表达式
4,遍历集合,搞定
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
zf2501 发表于 2016-11-21 22:42
你要是代码吗?
分析,1,将字符串转变为字符数组
2,创建双列集合,键是char的包装类,我忘记怎么拼写了, ...

汗,刚学到集合,该不会双列集合
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
本帖最后由 zf2501 于 2016-11-21 23:11 编辑
明月已驻人何在 发表于 2016-11-21 22:45
汗,刚学到集合,该不会双列集合

额额  你可以遍历字符数组,添加到list集合 , 判断元素是否在集合中 , 然后记数 ,最后输入就可以了
回复 使用道具 举报
这题用双列集合就非常简单 了
回复 使用道具 举报
期待大神的代码啊
回复 使用道具 举报
我是过来蹭热度的
回复 使用道具 举报
回复 使用道具 举报
zf2501 中级黑马 2016-11-22 19:50:14
9#


import java.util.Scanner;
import java.util.TreeSet;

public class Demo1 {

        /**
         *
         */
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入字符串");
                String s = sc.nextLine();
                //定义一个TreeSet集合用于存储字符
                TreeSet<Character> ts = new TreeSet<>();
                char[] arr = s.toCharArray();
                for (int i = 0; i < arr.length; i++) {
                        ts.add(arr);
                }
                System.out.println(ts);

                for (Character ch : ts) { //遍历TreeSet集合,拿到每一个不重复的元素
                        int count = 0;
                        char temp = ch;
                        for (int j = 0; j < arr.length; j++) {//遍历字符数组
                                if(temp == arr[j]) {              
                                        count++;       //统计单个字符出现的次数
                                }
                        }
                        System.out.print(ch + "(" + count + ")");
                }
               
        }

}
回复 使用道具 举报
定义两个集合ArrayList  list1,和list2,一个存字符,另一个存个数,两者之间需要一一对应关系。遍历字符串,判断list1.contains(s.charAt(i)),为false的话,就把这个char存入list1,中,list2中同时存1;如果为true,说明list1中已经有这个元素,那么用indexOf方法获取list1中这个元素的索引,然后list2.get(i)+1就行了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马