题解 | #记票统计#

记票统计

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的遍历方式。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务