如何在华为OD机试中获得满分?Java实现【记票统计】一文详解!

news2025/1/12 8:45:19

请添加图片描述

✅创作者:陈书予
🎉个人主页:陈书予的个人主页
🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区
🌟专栏地址: Java华为OD机试真题(2022&2023)

文章目录

  • 1. 题目描述
  • 2. 输入描述
  • 3. 输出描述
  • 4. Java算法源码
  • 5. 测试
  • 6.解题思路

1. 题目描述

请实现一个计票统计系统。你会收到很多投票,其中有合法的也有不合法的,请统计每个候选人得票的数量以及不合法的票数。

(注:不合法的投票指的是投票的名字不存在n个候选人的名字中!!)

数据范围:每组输入中候选人数量满足 1≤n≤100 ,总票数量满足 1≤n≤100

2. 输入描述

第一行输入候选人的人数n,第二行输入n个候选人的名字(均为大写字母的字符串),第三行输入投票人的人数,第四行输入投票。

3. 输出描述

按照输入的顺序,每行输出候选人的名字和得票数量(以" : "隔开,注:英文冒号左右两边都有一个空格!),最后一行输出不合法的票数,格式为"Invalid : "+不合法的票数。

4. Java算法源码

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    while (in.hasNextInt()) {
        //初始化
        int numOfCandidates = in.nextInt();
        in.nextLine();//指针移到下一行开头
        String[] nameOfCandidates = in.nextLine().split(" ");
        int numOfVotes = in.nextInt();
        in.nextLine();//指针移到下一行开头
        String[] voteFor = in.nextLine().split(" ");
        Map<String, Integer> dict = new HashMap<>();

        int invalid = 0;
        for (int i = 0; i < numOfCandidates; i++) {
            dict.put(nameOfCandidates[i], 0);
        }

        //计数
        for (int j = 0; j < numOfVotes; j++) {
            if (!dict.containsKey(voteFor[j])) {
                invalid++;
            } else {
                Integer pre = dict.get(voteFor[j]);
                dict.put(voteFor[j], pre + 1);
            }
        }

        //输出结果
        StringBuilder res = new StringBuilder();
        for (String s : nameOfCandidates) {
            res.append(s);
            res.append(" : ");
            res.append(dict.get(s));
            res.append("\n");
        }
        res.append("Invalid : ");
        res.append(invalid);
        System.out.println(res);
    }
}

5. 测试

在这里插入图片描述

6.解题思路

  1. 读取输入,首先读取候选人的人数numOfCandidates
  2. 使用in.nextLine()读取候选人的名字,并将其存储在字符串数组nameOfCandidates中。
  3. 读取投票人的人数numOfVotes
  4. 使用in.nextLine()读取投票结果,并将其存储在字符串数组voteFor中。
  5. 创建一个HashMap对象dict用于存储候选人的得票数量,其中候选人的名字作为键,初始值为0。
  6. 初始化不合法的票数invalid为0。
  7. 遍历候选人的名字,将其作为键放入dict中,并将值初始化为0。
  8. 遍历投票结果,对每张票进行判断。
    • 如果票的名字不在dict的键集合中,即为不合法的票,将invalid加1。
    • 如果票的名字在dict的键集合中,将对应的候选人的得票数量加1。
  9. 创建一个StringBuilder对象res用于存储输出结果。
  10. 遍历候选人的名字,按照输入的顺序输出候选人的名字和得票数量,格式为"候选人名字 : 得票数量",并将每行结果追加到res中。
  11. 将不合法的票数输出到res的末尾,格式为"Invalid : 不合法的票数"。
  12. res转换为字符串并输出。
  13. 重复步骤1到步骤12,直到没有更多的输入。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/580128.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VTK读入DICOM数据

date: 2019-04-02 16:26:00 VTK读入DICOM数据 DICOM示例&#xff1a; 图像来自www.dicomlibrary和medDream 准备图像 公开数据库 DICOM Library&#xff1a;链接&#xff0c;少量CT&#xff08;Computed Tomography&#xff0c;计算机断层扫描&#xff09;&#xff0c;MR&…

网络知识点之-HTTP协议

超文本传输协议&#xff08;Hyper Text Transfer Protocol&#xff0c;HTTP&#xff09;是一个简单的请求-响应协议&#xff0c;它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出&#xff1b;而消息内…

基于Open3D的点云处理4-数据结构Kdtree和Octree

Kdtree Kdtree是一种划分k维数据空间的数据结构&#xff0c;本质也是一颗二叉树&#xff0c;只不过每个节点的数据都是k维&#xff0c;当k1时&#xff0c;就是普通二叉树。 建立Kdtree实际上是一个不断划分的过程&#xff0c;首先选择最sparse的维度&#xff08;一般通过计算…

【LeetCode热题100】打开第6天:正则表达式匹配

文章目录 正则表达式匹配⛅前言&#x1f512;题目&#x1f511;题解 正则表达式匹配 ⛅前言 大家好&#xff0c;我是知识汲取者&#xff0c;欢迎来到我的LeetCode热题100刷题专栏&#xff01; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合…

Spring Authorization Server 系列(三)code换取token

code换取token 概述客户端认证方式换取结果 概述 在获取到code后&#xff0c;就可以使用code换取token了&#xff0c;但在换取token这一步还会对客户端进行一些校验&#xff0c;而这也支持不同的方式&#xff0c;一起来看看。 客户端认证方式 JwtClientAssertionAuthenticati…

2023 英国剑桥大学博士后含金量

作为英国顶尖的大学之一&#xff0c;剑桥大学自然也是博士后研究的理想选择。然而&#xff0c;对于那些希望在这所学府找到博士后职位的人来说&#xff0c;他们可能会问&#xff1a;剑桥大学的博士后含金量如何&#xff1f;首先&#xff0c;我们需要了解什么是博士后研究。简单…

阿里版ChatGPT已接入钉钉,张勇:未来所有业务都有大模型加持

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 我新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 阿里&#xff1a;大模型也是基础设施。 4 月 7 日下午&#xff0c;阿里云没有一点预告的突然宣布&#xff0c;自研类 ChatGPT …

《数据库应用系统实践》------ 小区停车管理系统

系列文章 《数据库应用系统实践》------ 小区停车管理系统 文章目录 系列文章一、需求分析1、系统背景2、 系统功能结构&#xff08;需包含功能结构框图和模块说明&#xff09;3&#xff0e;系统功能简介 二、概念模型设计1&#xff0e;基本要素&#xff08;符号介绍说明&…

MySQL_7 常见约束及演示

目录 一、约束概述 二、 PRIMARY KEY&#xff08;主键&#xff09; 1.作用 : 2.格式 : 3.自增长 : 4.演示 : 演示Ⅰ—— 主键约束的特点 演示Ⅱ—— 复合主键 演示Ⅲ—— 自增长 三、UNIQUE&#xff08;唯一&#xff09; 1.作用 : 2.格式 : 3.演示 : …

人多岗位少,都快把我卷死了,这是今年软件测试就业的真实写照,也是所有岗位的真实写照。

前两天跟一个HR朋友聊天&#xff0c;她表示刚在boss上发布了一个普通测试岗位&#xff0c;不到一小时竟然收到了几百份简历。而且简历质量极高&#xff0c;这是往年不敢想象的。岗位少&#xff0c;竞争激烈&#xff0c;这是今年软件测试就业的真实写照&#xff0c;也是所有岗位…

网狐大联盟数据库迁移到Linux系统

1.系统要求: ubuntu 20.04 Ubuntu 20.04.6 LTS (Focal Fossa) 安装系统 2.linux上安装mssql server Linux 上的 SQL Server 概述 - SQL Server | Microsoft Learn 安装指令: # 安装mssql-serverwget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee…

路径规划算法:基于入侵杂草优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于入侵杂草优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于入侵杂草优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

Java入门教程||Java 数据结构||Java 集合框架

Java 数据结构 Java 数据结构 Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类&#xff1a; 枚举&#xff08;Enumeration&#xff09;位集合&#xff08;BitSet&#xff09;向量&#xff08;Vector&#xff09;栈&#xff08;Stack&#xff0…

安全测试常用 ADB 命令

ADB&#xff0c;全称 Android Debug Bridge&#xff0c;即 Android 调试桥&#xff0c;是一个对 Android 开发人员和测试人员都必不可少的工具。adb 包含在 Android SDK 平台工具软件包中。可以使用 SDK 管理器下载此软件包&#xff0c;该管理器会将其安装在 android_sdk/platf…

多线程和多进程

线程和进程 最近经常看到多线程和多进程&#xff0c;这两个概念在某些方向还是很像的&#xff0c;但是进程和线程到底有啥联系&#xff0c;又有啥区别&#xff0c;很多人并没有完全弄明白&#xff0c;最近学操作系统的时候&#xff0c;老师经常叫线程为进程的进程&#xff0c;…

CMake之安装打包

目录 安装公共选项安装目标安装文件安装目录安装导出 导出问题 安装 install的用法 公共选项 install有多个签名&#xff0c;这些签名公用的选项有以下&#xff1a; DESTINATION&#xff1a;指定文件要安装的目录&#xff0c;可以是相对路径或绝对路径。 相对路径&#xff…

【JVM】12. 垃圾回收相关概念

文章目录 12.1. System.gc()的理解12.2. 内存溢出与内存泄露内存溢出&#xff08;OOM&#xff09;内存泄漏&#xff08;Memory Leak&#xff09; 12.3. Stop The World12.4. 垃圾回收的并行与并发并发&#xff08;Concurrent&#xff09;并行&#xff08;Parallel&#xff09;并…

QT调用VS编译的RabbitMQ-C静态库

为此折腾两天&#xff0c;参考了不少大神的文章&#xff0c;再次标识感谢。把自己的一些思路简单记录下&#xff1a; https://blog.csdn.net/qq_70244454/article/details/128086920 https://blog.csdn.net/zjzytnn/article/details/70045247 把几个踩过的坑&#xff0c;记录…

【Python REST API】零基础也能轻松掌握的学习路线与参考资料

REST&#xff08;Representational State Transfer&#xff09;是一种基于HTTP协议的软件架构风格&#xff0c;用于构建分布式网络应用程序。Python是一种功能强大的编程语言&#xff0c;它具有丰富的库和框架&#xff0c;可以使用Python编写RESTful API。本篇文章将详细介绍Py…

[java安全]反射

文章目录 [java安全]反射定义反射的运用1、反射获取类对象1.1、Class.forName()1.2、Object.class1.3、obj.getClass() 2、反射获取成员方法2.1、getMethods()2.2、getDeclaredMethods()2.3、getMethod()2.4、getDeclaredMethod() 3、反射获取构造方法4、反射创建对象4.1、通过…