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
广告