题解 | #比较版本号#
比较版本号
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)