一、要求描述
获取给定字符串中每一个字母出现的次数,并按要求格式输出。例:给定“aabedbcabbcacda”,输出a(5)b(4)c(3)d(2)e(1)。
二、具体逻辑
- 定义一个字符串
- 定义一个 TreeMap 集合:
键:Character
值:Integer - 把字符串转换为字符数组
- 遍历字符数组,得到每一个字符
- 拿刚才得到的字符作为键去集合中找,看返回值:
是 null:说明该键不存在,就把该字符作为键,1 作为值存储。
不是 null:说明该键存在,就把值 +1,然后重新存储该键和值。 - 定义字符串缓冲区变量
- 遍历集合,得到键和值,按照要求拼接处理
- 把字符串缓冲区转换为字符串输出
三、代码实现
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);
}
}
网友评论