AI刷题|版本号比较

129 阅读2分钟

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