比较两个版本号 version1
和 version2
。
如果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