题解 | #比较版本号#

比较版本号

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)


#自然语言处理NLP实习#
全部评论

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务