Python 版本号比较


假设我们需要比较两个版本号 version1 和 version2。如果 version1 > version2,则返回 1;如果 version1 < version2,则返回 -1;否则返回 0。我们可以假设版本字符串非空,并且只包含数字和点 (.) 字符。点字符不代表小数点,而是用于分隔数字序列。例如,2.5 不是“二点五”或“到版本三的一半”,而是第二个一级修订版的第五个二级修订版。

我们可以假设每个版本号级别的默认修订号为 0。例如,版本号 3.4 的一级和二级修订号分别为 3 和 4。它的三级和四级修订号均为 0。

因此,如果输入类似于 version1 = “1.0.1” 和 version2 = “1”,则它将返回 +1。

为了解决这个问题,我们将遵循以下步骤:

  • version1_arr = version1 以点分隔的数字数组

  • version2_arr = version2 以点分隔的数字数组

  • 对于范围为 0 到 version1_arr 大小和 version2_arr 大小最大值的 i:

    • 如果 i < version1_arr 大小,则 v1 := version1_arr[i],否则 v1 := 0

    • 如果 i < version2_arr 大小,则 v2 := version2_arr[i],否则 v2 := 0

    • 如果 v1 > v2,则返回 1;如果 v1 < v2,则返回 -1

  • 返回 0

示例 (Python)

让我们来看下面的实现,以便更好地理解:

 在线演示

class Solution:
   def compareVersion(self, version1, version2):
      versions1 = [int(v) for v in version1.split(".")]
      versions2 = [int(v) for v in version2.split(".")]
      for i in range(max(len(versions1),len(versions2))):
         v1 = versions1[i] if i < len(versions1) else 0
         v2 = versions2[i] if i < len(versions2) else 0
         if v1 > v2:
            return 1
         elif v1 <v2:
            return -1
      return 0
ob1 = Solution()
print(ob1.compareVersion("1.0.1","1.0"))

输入

"1.0.1"
"1.0"

输出

1

更新于:2020年5月2日

3K+ 浏览量

开启你的职业生涯

完成课程获得认证

开始学习
广告