题解 | #记票统计#

记票统计

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);
            }
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务