如何在华为OD机试中获得满分?Java实现【获取最大软件版本号】一文详解!

news2024/11/25 5:40:13

请添加图片描述

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

文章目录

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

1. 题目描述

Maven版本号定义,<主版本>.<次版本><增量版本>-<里程碑版本>
举例3.1.4-beta 其中,主版本和次版本都是必须的,主版本,次版本,增量版本由多位数字组成,可能包含前导零,里程碑版本由字符串组成。

<主版本>.<次版本>增量版本>:基于数字比较

里程碑版本:基于字符串比较,采用字典序。

比较版本号时,按从左到右的顺序依次比较。

基于数字比较,只需比较忽略任何前导零后的整数值,输入2个版本号,输出最大版本号。

2. 输入描述

输入2个版本号,换行分割,每个版本的最大长度小于50。

3. 输出描述

版本号相同时输出第一个输入版本号。

补充说明:
主版本,次版本,增量版本:

基于字符串比较,比如:

1.5>1.4>1.3.11>1.3.9

里程碑版本:基于字符串比较,比如:

1.2-beta-3>1.2-beta-11

4. Java算法源码

/**
 * 获取最大软件版本号
 */
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String line1 = sc.nextLine();
    String line2 = sc.nextLine();
    String[] arr1 = line1.split("\\.");
    int len1 = arr1.length;

    String[] arr2 = line2.split("\\.");
    int len2 = arr2.length;

    int len = Math.min(len1, len2);
    for (int i = 0; i < len; i++) {
        int value1 = getValue(arr1[0]);
        int value2 = getValue(arr2[0]);
        if (value1 == value2) {
            continue;
        }
        if (value1 > value2) {
            System.out.println(line1);
        } else {
            System.out.println(line2);
        }
        return;
    }

    if (len1 >= len2) {
        System.out.println(line1);
    } else {
        System.out.println(line2);
    }
}

public static int getValue(String val) {
    boolean hasZero = val.contains("0");
    int index = -1;
    if (hasZero) {
        char[] arr = val.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == 0) {
                continue;
            } else {
                index = i;
                break;
            }
        }
    }
    int num;
    if (index == -1) {
        num = 0;
    } else {
        num = Integer.parseInt(val.substring(index));
    }
    return num;
}

5. 测试

在这里插入图片描述

6.解题思路

在这里插入图片描述

  1. 首先读取输入的两个版本号字符串 line1line2
  2. 使用正则表达式 “.” 将版本号字符串分割成数组。
  3. 获取分割后的数组的长度,分别记为 len1len2
  4. 将两个版本号的长度进行比较,取较小的长度作为循环次数,记为 len
  5. 在循环中,依次比较对应位置的版本号值:
    • 获取当前位置的版本号值,调用 getValue 方法。
    • 如果两个版本号值相等,则继续比较下一个位置。
    • 如果第一个版本号值大于第二个版本号值,则输出第一个版本号并返回。
    • 如果第二个版本号值大于第一个版本号值,则输出第二个版本号并返回。
  6. 如果循环结束后,两个版本号的前缀部分完全相等,则根据长度比较输出较长的版本号。
  7. 如果第一个版本号的长度大于等于第二个版本号的长度,则输出第一个版本号。
  8. 如果第二个版本号的长度大于第一个版本号的长度,则输出第二个版本号。
    在这里插入图片描述

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

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

相关文章

使用kotlin用回溯法解决电话号码的字母组合问题

17. 电话号码的字母组合 难度中等 2474 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#…

23种设计模式中之中介者模式(Mediator Pattern)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将23种设计模式中的迭代器模式&#xff0c;此篇文章为一天学习一个设计模式系列文章&#xff0c;后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬…

运维工程师面试总结(含答案)

运维工程师面试总结 原文链接&#xff1a;https://www.cuiliangblog.cn/detail/article/2 一、linux 1. linux系统启动流程 第一步&#xff1a;开机自检&#xff0c;加载BIOS第二步&#xff1a;读取&#xff2d;&#xff22;&#xff32;第三步&#xff1a;Boot Loader grub…

uni-app常用场景速查记录

记录一下uniapp开发过程中遇到的问题场景,方便后期查看. 1.elementUI中textarea文本如何设置换行显示 2.uniapp中实现文字滚动显示 3.下拉刷新和触底分页查询 1.elementUI中textarea文本设置换行显示 el-input标签中type为textarea中录入的文本内容,在表格中显示…

关键词搜索1688商品数据采集、1688商品列表数据接口

1688&#xff1a;指中国最大的电子商务综合平台&#xff0c;类似于美国的亚马逊。 关键词&#xff1a;是用于描述检索文档或记录的词语或短语&#xff0c;通常是用户输入的查询信息。 搜索&#xff1a;是在数据库、网页搜索引擎或其他信息存储库中查找信息内容的过程。 商品数…

springboot+springsecurity+jwt+elementui图书管理系统

​​图书管理系统​​ 关注公号&#xff1a;java大师&#xff0c;回复“图书”&#xff0c;获取源码 一、springboot后台 1、mybatis-plus整合 1.1添加pom.xml <!--mp逆向工程 --><dependency><groupId>org.projectlombok</groupId><artifactId&…

腾讯云服务器可用区是什么意思?可用区详细说明

腾讯云服务器可用区什么意思&#xff1f;可用区&#xff08;Zone&#xff09;是指腾讯云在同一地域内电力和网络互相独立的物理数据中心&#xff0c;一个可用区故障不会影响另一个可用区的正常运行&#xff0c;所以可用区用于构建高容灾、高可靠性应用。腾讯云服务器网来详细说…

华为OD机试真题B卷 Java 实现【食堂供餐】,附详细解题思路

一、题目描述 某公司员工食堂以盒饭的方式供餐。 为将员工取餐排队时间降为0&#xff0c;食堂的供餐速度必须要足够快。 现在需要根据以往员工取餐的统计信息&#xff0c;计算出一个刚好能达到排队时间为0的最低供餐速度。 即&#xff0c;食堂在每个单位时间内必须至少做出…

分布式事务的21种武器 - 7

在分布式系统中&#xff0c;事务的处理分布在不同组件、服务中&#xff0c;因此分布式事务的ACID保障面临着一些特殊难点。本系列文章介绍了21种分布式事务设计模式&#xff0c;并分析其实现原理和优缺点&#xff0c;在面对具体分布式事务问题时&#xff0c;可以选择合适的模式…

Rocketmq学习之路(一)从生产上的问题引出MQ

前言&#xff1a; 从来没有真正弄明白mq是什么&#xff0c;只知道他有消峰&#xff0c;异步&#xff0c;解耦的作用。但是在日常开发工作中&#xff0c;就是简单的生产者发送消息&#xff0c;消费者接受消息。所以&#xff0c;从今天开始。我要吃掉这个技术。 一.这该死的订单…

word解决文字与公式mathtype不对齐

修改字体和段落里面的这两个。

每日学术速递5.23

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CL 1.Tree of Thoughts: Deliberate Problem Solving with Large Language Models 标题&#xff1a;思想树&#xff1a;用大型语言模型有意识地解决问题 作者&#xff1a;Shunyu Yao, …

每日学术速递5.24

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Reprompting: Automated Chain-of-Thought Prompt Inference Through Gibbs Sampling 标题&#xff1a;重新提示&#xff1a;通过 Gibbs 采样的自动思维链提示推理 作者&#xff1…

《java核心卷Ⅰ》读书笔记

&#x1f6eb; JDK和JRE傻傻分不清?&#x1f6eb; HelloWorld的输出都经历了啥&#xff1f;&#x1f6eb; Java的三个版本都是啥&#xff1f;&#x1f6eb; 关于main方法你都知道啥&#xff1f;main方法被声明为private会怎样&#xff1f;&#x1f6eb; 强制and自动类型转换都…

数据结构基础内容-----第四章 栈与队列

文章目录 栈栈的定义站的抽象数据类型两栈共享空间栈的作用递归的定义 栈运算 队列循环队列队列链式存储结构及实现 栈 栈的定义 栈&#xff08;Stack&#xff09;是计算机科学中的一种抽象数据类型&#xff0c;它是一个只能在一端进行插入和删除操作的线性数据结构。栈按照后…

tomcat what

tomcat是什么 对于tomcat是什么有什么作用。曾经看到一个大神是这样解释tomcat的&#xff0c;现在分享给大家 内容大体是&#xff1a; 我家有一台机器&#xff0c;可以把石头变成金子。你快递给我一箱石头&#xff0c;让我把它们变成一箱金子再快递给你。 这个机器就是web项…

【Python从入门到进阶】21、爬虫相关概念介绍

接上篇《20、HTML页面结构的介绍》 上一篇我们正式进入了Python爬虫的实战教程&#xff0c;主要讲解了要爬取的HTML页面的结构。本篇我们来介绍爬虫的相关概念。 一、什么是互联网爬虫 如果我们把互联网比作一张大的蜘蛛网&#xff0c;那一台计算机上的数据便是蜘蛛网上的一个…

如何自己搭建chatgpt镜像网站

前沿 总所周知&#xff0c;访问以及注册chatgpt都是比较困难的&#xff0c;如何能畅游chatgpt而不受魔法的限制呢&#xff1f;还好openai给出了非常不错的api能使我们快速搭建一个镜像网站 准备工作 首先得准备一台服务器 这里推荐使用海外vps来进行搭建&#xff0c;缺点就是…

java基础入门-16-【阶段项目(综合练习doudizhu游戏)】

Java基础入门-16-【阶段项目(综合练习&doudizhu游戏)】 25、阶段项目(综合练习&doudizhu游戏)斗地主小游戏斗地主游戏1(控制台版)步骤一:准备牌步骤二:洗牌步骤三:发牌步骤四:看牌步骤五:给牌进行排序(两种方式排序)方式一:利用序号进行排序方式二:给每一…

阻焊设计~焊盘阻焊开窗、阻焊桥

阻焊设计 焊盘阻焊开窗 阻焊开窗应比焊盘尺寸大6mils以上&#xff08;单边3mils&#xff09;&#xff0c;见下图&#xff1a; 阻焊桥 a) 相邻的SMD焊盘&#xff0c;SMD焊盘和插件孔、SMD焊盘和过孔、过孔与过孔之间需要保留阻焊桥&#xff1b;最小阻焊桥宽度2mils &#x…