Skip to content

Latest commit

 

History

History
51 lines (40 loc) · 1.5 KB

165_比较版本号.md

File metadata and controls

51 lines (40 loc) · 1.5 KB

165.比较版本号

问题

比较两个版本号 version1version2

如果version1>version2返回1,如果version1<version2返回 -1, 除此之外返回 0。 你可以假设版本字符串非空,并且只包含数字和.` 字符。

. 字符不代表小数点,而是用于分隔数字序列。

例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。

示例 1:
输入: version1 = "0.1", version2 = "1.1"
输出: -1

示例 2:
输入: version1 = "1.0.1", version2 = "1"
输出: 1

示例 3:
输入: version1 = "7.5.2.4", version2 = "7.5.3"
输出: -1

解答

一个字符串的处理题,其实这道题很类似于比较字典序,只不过比较的不是字符,而是数字。首先,需要把字符串处理成一个整数数组,去掉没有意义的0后,就和比较字典序的方法一样了。

class Solution:
    def toNums(self, version):
        nums = [int(x) for x in version.split('.')]
        while len(nums) > 0 and nums[-1] == 0:
            nums.pop()
        return nums

    def compareVersion(self, version1, version2):
        v1, v2 = self.toNums(version1), self.toNums(version2)
        for i in range(0, min(len(v1), len(v2))):
            if v1[i] > v2[i]:
                return 1
            elif v1[i] < v2[i]:
                return -1
        if len(v1) > len(v2):
            return 1
        elif len(v1) < len(v2):
            return -1
        return 0