1. 程式人生 > >Leetcode 165

Leetcode 165

比較兩個版本號 version1 和 version2
如果 version1 version2 返回 1,如果 version1 version2 返回 -1, 除此之外返回 0

你可以假設版本字串非空,並且只包含數字和 . 字元。

 . 字元不代表小數點,而是用於分隔數字序列。

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

示例 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

方法:

首先分析版本號的特點,由於版本號屬於帶數字和 ' . ' 的特殊字串。很自然的想到利用 ' . '進行切分,之後再進行後面的逐位比較。

AC程式碼如下:

class Solution:
    def compareVersion(self, version1, version2):
        """
        :type version1: str
        :type version2: str
        :rtype: int
        """
        v1 = version1.split('.')
        v2 = version2.split('.')
        
        length1 = len(v1)
        length2 = len(v2)
        
        num = max(length1, length2)
        for i in range(num):
            temp1, temp2 = 0, 0
            if i < length1:
                temp1 = int(v1[i])
            if i < length2 :
                temp2 = int(v2[i])
            if temp1 < temp2:
                return -1
            if temp1 > temp2:
                return 1
        return 0