题解
此题没什么难度,可以使用数组来统计投票结果,因为数组是有序的。
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
// 1.输入初始化
int n = sc.nextInt(); // 候选人数
String[] name = new String[n]; // 候选人名字
for (int i = 0; i < n; i++) {
name[i] = sc.next();
}
int m = sc.nextInt(); // 投票人数
String[] select = new String[m]; // 投票人投票的候选人
for (int i = 0; i < m; i++) {
select[i] = sc.next();
}
// 2.统计票数
// 四个人的票数统计,此处下标为n的表示统计不合法的字符数
int[] count = new int[n + 1];
for (int i = 0; i < m; i++) {
boolean flag = false; // 标记该投票是否合法
for (int j = 0; j < n; j++) {
if (select[i].equals(name[j])) {
count[j]++;
flag = true; // 合法标记
break;
}
}
if (!flag) { // 如果不合法,将不合法+1
count[n]++;
}
}
// 3.打印结果
for (int i = 0; i < count.length; i++) {
if (i == n) { // 输出不合法的字符
System.out.println("Invalid : " + count[i]);
break;
}
System.out.println(name[i] + " : " + count[i]);
}
}
}
}