165. 比較版本號
比較兩個版本號 version1 和 version2。
如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。
你可以假設版本字串非空,並且只包含數字和 . 字元。
. 字元不代表小數點,而是用於分隔數字序列。
例如,2.5 不是「兩個半」,也不是「差一半到三」,而是第二版中的第五個小版本。
你可以假設版本號的每一級的預設修訂版號為 0。例如,版本號 3.4 的第一級(大版本)和第二級(小版本)修訂號分別為 3 和 4。其第**和第四級修訂號均為 0。
示例 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
示例 4:
輸入:version1 = 「1.01」, version2 = 「1.001」
輸出:0
解釋:忽略前導零,「01」 和 「001」 表示相同的數字 「1」。
示例 5:
輸入:version1 = 「1.0」, version2 = 「1.0.0」
輸出:0
解釋:version1 沒有第**修訂號,這意味著它的第**修訂號預設為 「0」。
版本字串由以點 (.) 分隔的數字字串組成。這個數字字串可能有前導零。
版本字串不以點開始或結束,並且其中不會有兩個連續的點。
class
solution
:def
compareversion
(self, version1:
str, version2:
str)
->
int:
version1 = version1.split(
'.')
#以點號做分割
version2 = version2.split(
'.')
num1, num2 =0,
0 n1, n2 =
len(version1)
,len
(version2)
if n1 > n2:
#對字元長度短的補0
version2.extend(
['0']*
(n1-n2)
)elif n2 > n1:
version1.extend(
['0']*
(n2-n1)
)else
:pass
for i in
range
(max
(n1, n2)):
m =int(
'0'if
not version1[i]
.lstrip(
'0')
else version1[i]
.lstrip(
'0')
)#去掉左0,為空的時候填0
n =int(
'0'if
not version2[i]
.lstrip(
'0')
else version2[i]
.lstrip(
'0')
)if m > n:
return
1elif m < n:
return-1
else
:pass
return
0
leetcode165 比較版本號
比較兩個版本號 version1 和 version2。如果 version1 version2 返回 1,如果 version1 version2 返回 1,除此之外返回 0。你可以假設版本字串非空,並且只包含數字和 字元。字元不代表小數點,而是用於分隔數字序列。例如,2.5 不是 兩個半 也不是...
LeetCode 165 比較版本號
比較兩個版本號 version1 和 version2。如果 version1 version2 返回 1,如果 version1 version2 返回 1,除此之外返回 0。你可以假設版本字串非空,並且只包含數字和 字元。字元不代表小數點,而是用於分隔數字序列。例如,2.5 不是 兩個半 也不是...
leetcode165比較版本號
class solution object defcompareversion self,version1,version2 type version1 str type version2 str rtype int 不一定只有4級,以長的那級為準 sp1 version1.split sp2 ve...