解题思路:桶排序+使用LinkedHashMap来保持输出顺序;
又或者,读取输入时使用数组保存候选人名字的顺序
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int candidates = sc.nextInt();
Map<String, Integer> votes = new LinkedHashMap<>();
for (int i = 0; i < candidates; i++) {
votes.put(sc.next(), 0);
}
int invalid = 0;
int tickets = sc.nextInt();
for (int i = 0; i < tickets; i++) {
String ticket = sc.next();
if (votes.containsKey(ticket)) {
votes.put(ticket, votes.get(ticket).intValue() + 1);
} else {
invalid++;
}
}
for (Map.Entry<String, Integer> entry: votes.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue().intValue());
}
System.out.println("Invalid : " + invalid);
}
}
}
京公网安备 11010502036488号