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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class Demo1 {
        public static  void main(String[] args){
         String str = "asgsadgfasdgfasdf6565465";
         String char_count = getCharCount(str);
         System.out.println(char_count);
        }
    public static String getCharCount(String str) {
                char[] chs = str.toCharArray();      //将字符串转成字符数组
                Map<Character,Integer> map = new TreeMap<Character,Integer>();  //定义map集合
                for (int i = 0; i < chs.length; i++) {   //遍历字符数组,获取每一个字母
                     if(!(chs[i] >= 'a' && chs[i] <= 'z')){   //过滤掉非字母字符
                       if(!(chs[i] >= 'A' && chs[i] <= 'Z')){
                                continue;
                            }
                        }
                        Integer value = map.get(chs[i]);    //将遍历到的字母作为键去查表,获取值
                        int count = 0;     //用于记录次数
                        if(value != null){   //判断次数是否存在
                                count = value;     //存在,就用count记录次数
                        }
                        count++;           //次数不存在,就不记录,只对count自增变成1
                        map.put(chs[i], count);   //将字符和次数进行存储
                }
                return toString(map);
        }
    public static String toString(Map<Character, Integer> map) {
              StringBuilder sb = new StringBuilder();   //使用缓冲区
              Set<Character> keySet = map.keySet();     //将map集合转变成set集合
              for (Iterator<Character> it = keySet.iterator(); it.hasNext();) {   //通过迭代器,取出map集合中的元素
                        Character key = it.next();
                        Integer value = map.get(key);
                        sb.append(key+"("+value+")");   
                }
                return sb.toString();
        }
}

1 个回复

倒序浏览
//一楼这个是复制的别人的,感觉抄袭不太好,贴出自己的来
public class Demo1 {
        public static void main(String[] args) {
                String str = "asdf654654asdfasdfzzzzz24";
                counter(str);
        }
       
        public static void counter(String str) {
                //1.获取一个字符串,并将字符串转换成字符数组
                char[] arr = str.toCharArray();
                //2.定义一个Map集合对象,并过滤字符数组中的字母,将字母装进Map集合中
                Map<Character, Integer> map = new TreeMap<>();
                for(int i = 0; i < arr.length; i++) {
                        if((arr[i] >= 'a' && arr[i] <= 'z') || (arr[i] >= 'A' && arr[i] <= 'Z')) {
                //3.如果Map集合中没有这个字母,就存入键为这个字母,值为1;如果Map集合中有这个键,则值加1
                                if(!map.containsKey(arr[i])) {
                                        map.put(arr[i], 1);
                                } else {
                                        map.put(arr[i], map.get(arr[i]) + 1);
                                }
                        }
                }
                //4.遍历集合,取出键值
                for(Character ch : map.keySet()) {
                        System.out.println(ch + "(" + map.get(ch) + ")" ); ;
                }
        }
       
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马