leetcode165 比較版本號

2021-10-01 11:47:07 字數 1739 閱讀 4040

比較兩個版本號 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」。

版本字串由以點 (.) 分隔的數字字串組成。這個數字字串可能有前導零。

版本字串不以點開始或結束,並且其中不會有兩個連續的點。

在兩個list長度相等(取兩個list的最小長度)時,只要乙個乙個比較即可,直到比較結束,當某一字串長度多出時,如果出現的數字不為0,那麼一定是它更大一些,否則出現的數字全為0,則返回0。

class solution(object):

def compareversion(self, version1, version2):

""":type version1: str

:type version2: str

:rtype: int

"""v1 = [int(i) for i in version1.split(".")]

v2 = [int(i) for i in version2.split(".")]

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

for i in range(n):

if v1[i] > v2[i]:

return 1

elif v1[i] < v2[i]:

return -1

if len(v1) == len(v2):

return 0

if len(v1) < len(v2):

i = len(v1)

while i < len(v2):

if v2[i] != 0:

return -1

i+=1

return 0

if len(v1) > len(v2):

i = len(v2)

while i < len(v1):

if v1[i] != 0:

return 1

i+=1

return 0

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...

leetcode 165 比較版本號

165.比較版本號 比較兩個版本號 version1 和 version2。如果 version1 version2 返回 1,如果 version1 version2 返回 1,除此之外返回 0。你可以假設版本字串非空,並且只包含數字和 字元。字元不代表小數點,而是用於分隔數字序列。例如,2.5 ...