在 Python 中比较版本号

pythonserver side programmingprogramming更新于 2025/11/13 15:08:17

假设我们必须比较两个版本号 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

  • for i in range 0 to max of size of version1_arr and size of version2_arr −

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

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

相关文章


有用资源