黑马程序员技术交流社区

标题: 集合问题求助 [打印本页]

作者: 明月已驻人何在    时间: 2016-11-21 22:15
标题: 集合问题求助
从控制台接受一串字符串,统计这个字符串中,每个字符出现的次数。
例如:假设键盘录入了:abc$Uabc
那么输出的结果是:a(2)b(2)c(2)$(1)%(1)5(2)

作者: zf2501    时间: 2016-11-21 22:42
本帖最后由 zf2501 于 2016-11-21 22:45 编辑

你要是代码吗?
分析,1,将字符串转变为字符数组
2,创建TreeMap集合,键是char的包装类,我忘记怎么拼写了,值是integer
3,遍历字符数组,添加到几个的键,判断键是否存在,不存在值就是1,存在就让键加1~这里可以用三元表达式
4,遍历集合,搞定

作者: 明月已驻人何在    时间: 2016-11-21 22:45
zf2501 发表于 2016-11-21 22:42
你要是代码吗?
分析,1,将字符串转变为字符数组
2,创建双列集合,键是char的包装类,我忘记怎么拼写了, ...

汗,刚学到集合,该不会双列集合

作者: zf2501    时间: 2016-11-21 22:46
本帖最后由 zf2501 于 2016-11-21 23:11 编辑
明月已驻人何在 发表于 2016-11-21 22:45
汗,刚学到集合,该不会双列集合

额额  你可以遍历字符数组,添加到list集合 , 判断元素是否在集合中 , 然后记数 ,最后输入就可以了
作者: SuperLan    时间: 2016-11-21 23:13
这题用双列集合就非常简单 了
作者: 来到精彩世界    时间: 2016-11-21 23:45
期待大神的代码啊

作者: 袁志娜    时间: 2016-11-22 09:37
我是过来蹭热度的
作者: 乡村看水    时间: 2016-11-22 10:43
回复一下

作者: zf2501    时间: 2016-11-22 19:50
来到精彩世界 发表于 2016-11-21 23:45
期待大神的代码啊


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 + ")");
                }
               
        }

}

作者: fisheryujie    时间: 2016-11-22 23:55
定义两个集合ArrayList  list1,和list2,一个存字符,另一个存个数,两者之间需要一一对应关系。遍历字符串,判断list1.contains(s.charAt(i)),为false的话,就把这个char存入list1,中,list2中同时存1;如果为true,说明list1中已经有这个元素,那么用indexOf方法获取list1中这个元素的索引,然后list2.get(i)+1就行了。




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