题解 | #记票统计#
记票统计
https://www.nowcoder.com/practice/3350d379a5d44054b219de7af6708894
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
int conNum = in.nextInt();
Map<String,Integer> conAndVotesNumMap=new LinkedHashMap<>();
for (int i = 0; i < conNum; i++) {
String con = in.next();
conAndVotesNumMap.put(con,0);
}
//投票人数
int voteNum=in.nextInt();
int invalid=0;
for(int i=0;i<voteNum;i++){
//投票对象
String voteTo=in.next();
Integer num=conAndVotesNumMap.get(voteTo);
//num为null,说明投票对象不是候选人
if(num==null){
invalid++;
}else{
conAndVotesNumMap.put(voteTo,num+1);
}
}
Set<Map.Entry<String,Integer>> set=conAndVotesNumMap.entrySet();
for(Map.Entry<String,Integer> entry:set){
System.out.println(entry.getKey()+" : "+entry.getValue());
}
System.out.println("Invalid : "+invalid);
}
}
}
很短的逻辑,利用hashMap,也响应考点,只是LinkedHashMap和HashMap的特性要了解,以及知道Map的遍历方式。
