8.2华为OD机试真题 新系统 - 语义化版本号对比 (Java/Py/C/C++/Js/Go)

语义化版本号对比

2026 华为OD机试真题 8月2日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

当前有一组版本号列表信息,单个版本号格式为:Major.Minor.Patch-可选先行版+可选构建信息,具体字段如下:

  • Major.Minor.Patch:为三个非负整数,禁止前导零;
  • 先行版和构建信息:可选段信息,由字母数字和符号(.-)组成;

请实现语义化版本号比较器,对输入版本号字符串列表按下面规则处理,返回最大的版本号(若存在相等最大版本号,则返回第一个版本号),若存在不合规格式则返回空字符串。

优先级比较:从左至右比较 Major Minor Patch 数字大小,大的优先;若 Major Minor Patch 相同,则继续对比先行版信息(第一个 - 号为分隔符,有信息大于无信息);如果先行版信息相同,则对比构建信息(第一个 + 号为分隔符,有信息大于无信息);

先行版和构建信息如果包含符号 .,先按 . 切分然后逐一对比,切分后首个元素大的优先,如果首元素相同则比较第二个,依次类推;单个元素对比规则如下:

  • 纯数值:按数值大的优先
  • 字符/数字/符号/混合串:ASCII 字典序大的优先 (1<A<a)
  • 前缀相同:内容多者优先 (a-b < a-b-c)

输入描述

输入版本号列表长度在 [1,100] 之间,每个版本号字符串长度在 [0,1024] 之间,其中纯数字标识符的值在 [0,2^{31}-1] 之间,非纯数字标识符长度在 [0,1024] 之间。

先行版和构建信息输入保证:任意符号之间内容不为空,信息中可能出现 -.,不出现 _.(在特定上下文中)、~,不以符号开头或结尾,纯数字标识符无前导零;+ 最多出现一次;

输入为一行,多个版本号之间使用英文逗号分隔。

输出描述

返回最大的版本号字符串,若存在不合规格式则返回空字符串。

示例1

输入

0.0.1,0.1.1,1.0.0

输出

1.0.0

说明

按顺序对比Major.Minor.Patch大小,1>0>0

示例2

输入

1.0.0-alpha,1.0.0.alpha.alpha,1.0.0-alpha.beta

输出<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值