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

2020-12-18  本文已影响0人  Djbfifjd

一、要求描述

获取给定字符串中每一个字母出现的次数,并按要求格式输出。例:给定“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);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读