美文网首页
统计并按要求输出每个字符出现的次数

统计并按要求输出每个字符出现的次数

作者: Djbfifjd | 来源:发表于2020-12-18 17:03 被阅读0次

    一、要求描述

    获取给定字符串中每一个字母出现的次数,并按要求格式输出。例:给定“aabedbcabbcacda”,输出a(5)b(4)c(3)d(2)e(1)。

    二、具体逻辑

    1. 定义一个字符串
    2. 定义一个 TreeMap 集合:
      键:Character
      值:Integer
    3. 把字符串转换为字符数组
    4. 遍历字符数组,得到每一个字符
    5. 拿刚才得到的字符作为键去集合中找,看返回值:
      是 null:说明该键不存在,就把该字符作为键,1 作为值存储。
      不是 null:说明该键存在,就把值 +1,然后重新存储该键和值。
    6. 定义字符串缓冲区变量
    7. 遍历集合,得到键和值,按照要求拼接处理
    8. 把字符串缓冲区转换为字符串输出

    三、代码实现

    import java.util.Scanner;
    import java.util.Set;
    import java.util.TreeMap;
    
    public class TreeMapDemo {
        public static void main(String[] args) {
            // 定义一个字符串:键盘录入方式
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个字符串:");
            String line = sc.nextLine();
    
            // 定义一个TreeMap集合
            TreeMap<Character, Integer> tm = new TreeMap<>();
            // 把字符串转换为字符数组
            char[] chs = line.toCharArray();
            for (char ch : chs) {
                // 拿刚才得到的字符作为键去集合中找,看返回值
                Integer i = tm.get(ch);
    
                // 是null:说明该键不存在,就把该字符作为键,1作为值存储
                if (i == null) {
                    tm.put(ch, 1);
                } else {
                    // 不是null:说明该键存在,就把值加1,然后重新存储该键和值
                    ++i;
                    tm.put(ch, i);
                }
            }
    
            // 定义字符串缓冲区变量
            StringBuilder sb = new StringBuilder();
    
            // 遍历集合,得到键和值,按照要求拼接处理
            Set<Character> set = tm.keySet();
            for (Character key : set) {
                Integer value = tm.get(key);
                sb.append(key).append("(").append(value).append(")");
            }
    
            // 把字符串缓冲区转换为字符串输出
            String resulut = sb.toString();
            System.out.println("resulut:" + resulut);
        }
    }
    

    相关文章

      网友评论

          本文标题:统计并按要求输出每个字符出现的次数

          本文链接:https://www.haomeiwen.com/subject/vlbubktx.html