返回
轻松拿下 LeetCode 165:比较版本号(Python)
后端
2024-02-14 03:13:42
问题
给定两个版本号 version1 和 version2,你需要比较它们的大小,并返回一个整数,-1 表示 version1 小于 version2,0 表示两者相等,1 表示 version1 大于 version2。
版本号由多个数字组成,数字之间用点分隔。例如,"1.2.3" 表示版本号为 1.2.3。
解题思路
-
将两个版本号字符串拆分为数字列表,其中每个元素代表一个版本号的组成部分。
-
比较两个列表的长度,如果长度不同,则长度较短的列表应该被扩展为相同长度。
-
然后,依次比较每个数字,如果两个数字不相等,则直接返回比较结果。
-
如果所有数字都相等,则返回 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 是比较版本号问题的经典实现。通过将版本号字符串拆分为数字列表,并比较每个数字,可以轻松判断两个版本号的大小。
希望本文能帮助你轻松理解和解决这道题。