LeetCode 165 比較版本號

2022-09-19 12:09:11 字數 1876 閱讀 5419

165. 比較版本號

給你兩個版本號version1version2,請你比較它們。

版本號由乙個或多個修訂號組成,各修訂號由乙個'.'連線。每個修訂號由多位數字組成,可能包含前導零。每個版本號至少包含乙個字元。修訂號從左到右編號,下標從 0 開始,最左邊的修訂號下標為 0 ,下乙個修訂號下標為 1 ,以此類推。例如,2.5.330.1都是有效的版本號。

比較版本號時,請按從左到右的順序依次比較它們的修訂號。比較修訂號時,只需比較忽略任何前導零後的整數值。也就是說,修訂號1和修訂號001相等。如果版本號沒有指定某個下標處的修訂號,則該修訂號視為0。例如,版本1.0小於版本1.1,因為它們下標為0的修訂號相同,而下標為1的修訂號分別為010 < 1

返回規則如下:

示例 1:

輸入:version1 = "1.01", version2 = "1.001"

輸出:0

解釋:忽略前導零,"01" 和 "001" 都表示相同的整數 "1"

示例 2:

輸入:version1 = "1.0", version2 = "1.0.0"

輸出:0

解釋:version1 沒有指定下標為 2 的修訂號,即視為 "0"

示例 3:

輸入:version1 = "0.1", version2 = "1.1"

輸出:-1

解釋:version1 中下標為 0 的修訂號是 "0",version2 中下標為 0 的修訂號是 "1" 。0 < 1,所以 version1 < version2

使用分割字串的方法來解決這道題目是比較直觀的一種解法,因為它需要比較的是一部分一部分的內容。

再分割字串後,需要把子串轉換為int型別,在轉換的過程中就實現了自動去除字首零的目標。

本題唯一需要注意的乙個點就是在使用string.split()方法時,裡面的'.'引數需要進行轉義,即使用'\.'的方式。

class solution else if(num1 > num2)

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