题解 | #记票统计#

记票统计

https://www.nowcoder.com/practice/3350d379a5d44054b219de7af6708894

import java.util.*;
import java.util.stream.Collectors;

/**
 * @author hll[yellowdradra@foxmail.com]
 * @since 2023-03-25 13:36
 **/
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 候选人人数
        int candidatesCount = Integer.parseInt(in.nextLine());
        // 候选人姓名列表
        List<String> candidateList = Arrays.stream(in.nextLine().split(" ")).collect(Collectors.toList());
        // 选民人数
        int votersCount = Integer.parseInt(in.nextLine());
        // 选票
        String[] votes = in.nextLine().split(" ");
        // 候选人Map(key: 候选人姓名, value: 候选人得票数,初始化为0)
        Map<String, Integer> candidateMap = new LinkedHashMap<>(candidatesCount);
        for (String candidate : candidateList) {
            candidateMap.put(candidate, 0);
        }
        // 遍历选票 如果所选的候选人存在 则该候选人的选票数加一 否则为将该候选人加入候选人Map 并将其票数置为负数
        for (String vote : votes) {
            candidateMap.compute(vote, (k, v) -> candidateMap.containsKey(vote) ? v + 1 : Integer.MIN_VALUE);
        }
        // 有效选票数量
        int validCount = 0;
        // 遍历候选人Map
        for (Map.Entry<String, Integer> entry : candidateMap.entrySet()) {
            // 合法的候选人
            if (entry.getValue() >= 0) {
                System.out.println(entry.getKey() + " : " + entry.getValue());
                // 统计合法票数
                validCount += entry.getValue();
            } else {
                // LinkedHashMap保证插入有序 所以遇到第一个不合法的候选人 就可以结束了
                break;
            }
        }
        System.out.println("Invalid : " + (votersCount - validCount));
    }
}

全部评论

相关推荐

10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
11-24 00:11
已编辑
广东工业大学 算法工程师
避雷深圳&nbsp;&nbsp;yidao,试用期&nbsp;6&nbsp;个月。好嘛,试用期还没结束,就直接告诉你尽快找下一家吧,我谢谢您嘞
牛客75408465号:笑死,直属领导和 hr 口径都没统一,各自说了一些离谱的被裁理由,你们能不能认真一点呀,哈哈哈哈哈😅😅😅
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务