LeetCode165比较版本号

题目描述

比较两个版本号 version1version2
如果 *version1* > *version2* 返回 1,如果 *version1* < *version2* 返回 -1, 除此之外返回 0

你可以假设版本字符串非空,并且只包含数字和 . 字符。

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

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

示例 1:

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

示例 2:

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

示例 3:

1
2
输入: version1 = "7.5.2.4", version2 = "7.5.3"
输出: -1

解题思路

本题主要思路就是依次比较版本号的每一位的值,注意题目的特殊性,小版号可能会存在01类似的情况,需要注意将数值转为int类型。然后是小心边界条件,比如版本号为 1.0.01 是同版本的。

代码实现

GitHub Python代码地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution(object):
def compareVersion(self, version1, version2):
"""
:type version1: str
:type version2: str
:rtype: int
"""
v1 = version1.split('.')
v2 = version2.split('.')

length = min(len(v1), len(v2))

for i in range(length):
if int(v1[i]) > int(v2[i]):
return 1
if int(v1[i]) < int(v2[i]):
return -1

if len(v1) > len(v2):
for i in range(len(v2), len(v1)):
if int(v1[i]) != 0:
return 1
return 0
elif len(v1) == len(v2):
return 0
else:
for i in range(len(v1), len(v2)):
if int(v2[i]) != 0:
return -1
return 0