AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3009. 版本管理

简单通过率 38% · 提交 119 · 通过 45
双指针模拟字符串

小慕在维护一个软件版本管理系统,版本号由点号分隔的数字序列组成,例如1.2.3和2.0。现在,小慕需要编写一个函数,计算两个版本号之间的可用版本号数量。这里的可用版本号是指所有满足version1 = version2,则返回0。

提示:带虚线的词点一下有通俗解释。

输入描述

输入两个字符串version1和version2,均遵循以下规定: 1. 版本号由数字和点组成,且至少包含一个数字。 2. 点不会作为版本号的开头或结尾,也不会连续出现。 3. 每个数字部分的数值忽略前导零(例如1.01和1.001视为相同) 4. 两个字符串中间以英文逗号分割

输出描述

输出一个整数,表示可用版本号的个数。具体规则如下: - 如果version1 >= version2,返回0 - 否则,找到第一个不同的版本号段,假设在位置i,version1的该段值为v1,version2的该段值为v2。可用版本号的个数为v2-v1-1。 - 如果第一个不同段之后的版本段在version2中不全为0,则返回0

示例

示例 1

输入

1.2,1.4

输出

1

说明:不同段中version1为2,version2为4,4-2-1 = 1

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
版本号比较示例:1.2.3 与 1.4.1 version1: 1.2.3 version2: 1.4.1 段1: 1 段2: 2 段3: 3 段1: 1 段2: 4 段3: 1 第一个不同段:段2 v1 = 2, v2 = 4 可用版本号个数 = v2 - v1 - 1 = 4 - 2 - 1 = 1 注意:段3在version2中为1(非0),因此返回0
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「版本管理」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。