比较Python中的版本号

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

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

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

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

  • version1_arr =版本1的数字数组,用点分隔

  • version2_arr =版本2的数字数组,用点号分隔

  • 对于范围在0到version1_arr的最大值和version2_arr的最大值的范围内的i-

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

    • v2:= version2_arr [i],如果i <version2_arr的大小,否则为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