描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
数据范围: 1≤𝑛≤500 1≤n≤500
输入描述:
输入一行没有空格的字符串。
输出描述:
输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。
示例1
输入:
abc输出:
3
示例2
输入:
aaa输出:
1
代码
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String a = in.nextLine();
//创建一个map,存放字符和字符出现次数
Map<Character, Integer> charCounts = new HashMap<>();
//遍历字符,toCharArray 可以把字符串抓换成字符数组
for(char c:a.toCharArray()){
// getOrDefault获取键值,如果不存在则赋值为0,有则+1
charCounts.put(c, charCounts.getOrDefault(c, 0)+1);
}
System.out.println(charCounts.size());
}
}
}