题解 | #比较版本号#
比较版本号
https://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7
第1步:确定两个版本号的长度范围,
第2步:设置两个指针分别指向version1和version2的最左边的数字,
第3步:设置循环,知道某一个字符串结束
首先设置版本1里面的最左边数字为0, 其实可以理解为个位数,
num1 = 0
然后设置循环语句开始从左到右读取数字,前提是:
while i < n1 and version1[i] != '.'然后依次往右推,例如version1=’1.2.1.1‘,截取2时,我们取出来的时12,代码如下:
num1 = num1 * 10 + int(version1[i]) i += 1值得注意的是,为跳过’.‘,循环外我们需要放置:
i += 1
version2的数字截取方式类似version1.
第4步:第4步就很简单啦,直接对截取的两个版本的数字进行比较,输出对应的返回值即可。
具体代码如下:
def versionCompare(version1: str, version2: str) -> int:
n1 = len(version1)
n2 = len(version2)
i, j = 0, 0 # 直到某个字符串结束 while i < n1 or j < n2:
num1 = 0 # 从下一个点前截取数字
while i < n1 and version1[i] != '.':
num1 = num1 * 10 + int(version1[i])
i += 1
# 跳过点
i += 1
num2 = 0 # 从下一个点前截取数字
while j < n2 and version2[j] != '.':
num2 = num2 * 10 + int(version2[j])
j += 1
# 跳过点
j += 1
# 比较数字大小
if num1 > num2:
return 1
if num1 < num2:
return -1
# 版本号相同
return 0
if __name__ =='__main__':
v1 = input().split('.')
v2 = input().split('.')
result = versionCompare(v1, v2)
print(result)
