返回

轻松拿下 LeetCode 165:比较版本号(Python)

后端

问题

给定两个版本号 version1 和 version2,你需要比较它们的大小,并返回一个整数,-1 表示 version1 小于 version2,0 表示两者相等,1 表示 version1 大于 version2。

版本号由多个数字组成,数字之间用点分隔。例如,"1.2.3" 表示版本号为 1.2.3。

解题思路

  1. 将两个版本号字符串拆分为数字列表,其中每个元素代表一个版本号的组成部分。

  2. 比较两个列表的长度,如果长度不同,则长度较短的列表应该被扩展为相同长度。

  3. 然后,依次比较每个数字,如果两个数字不相等,则直接返回比较结果。

  4. 如果所有数字都相等,则返回 0,表示两个版本号相等。

代码实现

def compareVersion(version1, version2):
    """
    比较两个版本号的大小

    :param version1: 版本号1
    :param version2: 版本号2
    :return: -1表示version1小于version2,0表示两者相等,1表示version1大于version2
    """
    # 将两个版本号字符串拆分为数字列表
    v1 = [int(num) for num in version1.split(".")]
    v2 = [int(num) for num in version2.split(".")]

    # 比较两个列表的长度
    if len(v1) < len(v2):
        # 扩展v1的长度
        v1.extend([0] * (len(v2) - len(v1)))
    elif len(v2) < len(v1):
        # 扩展v2的长度
        v2.extend([0] * (len(v1) - len(v2)))

    # 依次比较每个数字
    for i in range(len(v1)):
        if v1[i] < v2[i]:
            return -1
        elif v1[i] > v2[i]:
            return 1

    # 如果所有数字都相等,则返回0
    return 0


# 测试
print(compareVersion("1.2.3", "1.2.4"))  # -1
print(compareVersion("1.2.3", "1.2.3"))  # 0
print(compareVersion("1.2.4", "1.2.3"))  # 1

结语

LeetCode 165 是比较版本号问题的经典实现。通过将版本号字符串拆分为数字列表,并比较每个数字,可以轻松判断两个版本号的大小。

希望本文能帮助你轻松理解和解决这道题。