比较两个版本号 version1 和 version2。
如果 version1 > version2
返回 1
,如果 version1 < version2
返回 -1
, 除此之外返回 0
。
你可以假设版本字符串非空,并且只包含数字和 .
字符。
.
字符不代表小数点,而是用于分隔数字序列。
例如,2.5
不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。
你可以假设版本号的每一级的默认修订版号为 0
。例如,版本号 3.4
的第一级(大版本)和第二级(小版本)修订号分别为 3
和 4
。其第三级和第四级修订号均为 0
。
? https://leetcode-cn.com/classic/problems/compare-version-numbers/description/
思路:
1.先split('.')
2.扫描split得到的数组,将其中的每个元素加到各自的字符串中。
3.对数组中的每个元素先 int(x) 去除前导0,然后将int(x)的结果直接加到字符串中。
4.处理的两个字符串如果长度相同直接比较,如果长度不同,要先把短的字符串补齐(0),然后再比较。
class Solution:
def compareVersion(self, version1: str, version2: str) -> int:
res1 = version1.split('.')
res2 = version2.split('.')
st1 = ''
st2 = ''
for i in res1:
st1 += chr(int(i) + 48)
for i in res2:
st2 += chr(int(i) + 48)
len1 = len(st1)
len2 = len(st2)
if len1 < len2:
n = len2 - len1
while(n):
st1 += '0'
n -= 1
if len2 < len1:
n = len1 - len2
while(n):
st2 += '0'
n -= 1
if st1 < st2:
return -1
elif st1 > st2:
return 1
return 0