语义化版本号对比
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
输出<
订阅专栏 解锁全文

45万+

被折叠的 条评论
为什么被折叠?



