题解 | #记票统计#
记票统计
https://www.nowcoder.com/practice/3350d379a5d44054b219de7af6708894
使用数组保证人名有序,使用 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); } } } }