AI刷题|版本号比较
问题描述
在某个项目中,每个版本都用版本号标记,由一个或多个修订号组成,修订号之间由点号.分隔。每个修订号可能有多位数字,并且可能会包含前导零。你需要根据两个版本号 version1 和 version2,判断哪个版本更新,或者它们是否相同。
例如,2.5.33 和 0.1 都是有效的版本号。
当比较两个版本时,从左到右依次比较它们的修订号。忽略每个修订号的前导零,直接比较修订号对应的整数值。如果其中一个版本没有足够的修订号,缺失部分默认补为0。
你需要根据以下规则返回比较结果:
- 如果
version1 > version2,返回1。 - 如果
version1 < version2,返回-1。 - 如果两个版本相等,返回
0。 -
测试样例
样例1:
输入:
version1 = "0.1" , version2 = "1.1"
输出:-1
样例2:
输入:
version1 = "1.0.1" , version2 = "1"
输出:1
样例3:
输入:
version1 = "7.5.2.4" , version2 = "7.5.3"
输出:-1
样例4:
输入:
version1 = "1.0" , version2 = "1.0.0"
输出:0
思路:使用字符串分割与列表转换进行预处理,然后进行长度比较,优先比较较长的长度,这样即使版本号段数不同也能正确比较,再使用for循环来循环遍历,缺少的段位自动补0,最后编写不同情况的返回结果。
import sys
def solution(version1, version2):
#将字符串转换为整数列表依次比较
#split函数通过指定分隔符将字符进行分割并返回列表
version1_ints = [int(part) for part in version1.split('.')]
version2_ints = [int(part) for part in version2.split('.')]
for i in range(max(len(version1_ints), len(version2_ints))):
version1_int = version1_ints[i] if i < len(version1_ints) else 0
version2_int = version2_ints[i] if i < len(version2_ints) else 0
if version1_int > version2_int:
return 1
elif version1_int < version2_int:
return -1
return 0