题解 | #字符个数统计#
字符个数统计
https://www.nowcoder.com/practice/eb94f6a5b2ba49c6ac72d40b5ce95f50
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
Map<String,Integer> map = new HashMap<>();
for(int i = 0;i<str.length();i++){
char ch = str.charAt(i);
Integer count = map.get(ch);
if(count != null){
count++;
map.put(ch+"",count);
}else{
map.put(ch+"",1);
}
}
System.out.println(map.size());
}
}
一开始为了判断是否去重就想到了Map,但其实不对,去重应该优先想到Set,系统自动去重而不需要人为的去判断。
下面是热评第一的代码:
import java.util.BitSet;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.next();
//总共有128个字符。字需要用128位
BitSet bitSet = new BitSet(128);
for (char c : line.toCharArray()) {
bitSet.set(c);
}
//统计有多少字符已出现过
System.out.println(bitSet.cardinality());
}
}
再用HashSet实现:
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.next();
Set<Character> hashSet = new HashSet<Character>();
for (char c : line.toCharArray()) {
hashSet.add(c);
}
//统计有多少字符已出现过
System.out.println(hashSet.size());
}
}
查看3道真题和解析