使用数组保证人名有序,使用 hash 表存储人头和票数
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
int m = in.nextInt();
// 人名数组
String[] uarr = new String[m];
for(int i = 0; i < m; i++){
uarr[i] = in.next();
}
// 使用 hash 存储投票的人头和票数
Map<String,Integer> hash = new HashMap<>();
int n = in.nextInt();
for(int i = 0; i < n; i++) {
String e = in.next();
hash.put(e, hash.getOrDefault(e, 0) + 1);
}
// 因为需要有序,所以直接按照人名数组进行遍历
for(String u : uarr) {
int v = hash.getOrDefault(u, 0);
System.out.println(u + " : " + v);
hash.remove(u); // 有效的选举人记得移除
}
// 总共有多少没有用的票数,注意是票数,不是没用的人,这里我出错了
if(hash.isEmpty()) {
System.out.println("Invalid : " + 0);
} else {
int inv = 0;
for(int v : hash.values()) {
inv += v;
}
System.out.println("Invalid : " + inv);
}
}
}
}

京公网安备 11010502036488号