问题描述
在某个项目中,每个版本都用版本号标记,由一个或多个修订号组成,修订号之间由点号.
分隔。每个修订号可能有多位数字,并且可能会包含前导零。你需要根据两个版本号 version1
和 version2
,判断哪个版本更新,或者它们是否相同。
例如,2.5.33
和 0.1
都是有效的版本号。
当比较两个版本时,从左到右依次比较它们的修订号。忽略每个修订号的前导零,直接比较修订号对应的整数值。如果其中一个版本没有足够的修订号,缺失部分默认补为0
。
你需要根据以下规则返回比较结果:
- 如果
version1 > version2
,返回1
。 - 如果
version1 < version2
,返回-1
。 - 如果两个版本相等,返回
0
。
代码
def solution(version1, version2):
# Edit your code here
n, m = len(version1), len(version2)
i, j = 0, 0
while i < n or j < m:
x = 0
while i < n and version1[i] != '.':
x = x * 10 + ord(version1[i]) - ord('0')
i += 1
i += 1
y = 0
while j < m and version2[j] != '.':
y = y * 10 + ord(version2[j]) - ord('0')
j += 1
j += 1
if x != y:
return 1 if x > y else -1
return 0
if __name__ == "__main__":
# Add your test cases here
print(solution("0.1", "1.1") == -1)
print(solution("1.0.1", "1") == 1)
print(solution("7.5.2.4", "7.5.3") == -1)
print(solution("1.0", "1.0.0") == 0)