Python 版本號比較


假設我們需要比較兩個版本號 version1 和 version2。如果 version1 > version2,則返回 1;如果 version1 < version2,則返回 -1;否則返回 0。我們可以假設版本字串非空,並且只包含數字和點 (.) 字元。點字元不代表小數點,而是用於分隔數字序列。例如,2.5 不是“二點五”或“到版本三的一半”,而是第二個一級修訂版的第五個二級修訂版。

我們可以假設每個版本號級別的預設修訂號為 0。例如,版本號 3.4 的一級和二級修訂號分別為 3 和 4。它的三級和四級修訂號均為 0。

因此,如果輸入類似於 version1 = “1.0.1” 和 version2 = “1”,則它將返回 +1。

為了解決這個問題,我們將遵循以下步驟:

  • version1_arr = version1 以點分隔的數字陣列

  • version2_arr = version2 以點分隔的數字陣列

  • 對於範圍為 0 到 version1_arr 大小和 version2_arr 大小最大值的 i:

    • 如果 i < version1_arr 大小,則 v1 := version1_arr[i],否則 v1 := 0

    • 如果 i < version2_arr 大小,則 v2 := version2_arr[i],否則 v2 := 0

    • 如果 v1 > v2,則返回 1;如果 v1 < v2,則返回 -1

  • 返回 0

示例 (Python)

讓我們來看下面的實現,以便更好地理解:

 線上演示

class Solution:
   def compareVersion(self, version1, version2):
      versions1 = [int(v) for v in version1.split(".")]
      versions2 = [int(v) for v in version2.split(".")]
      for i in range(max(len(versions1),len(versions2))):
         v1 = versions1[i] if i < len(versions1) else 0
         v2 = versions2[i] if i < len(versions2) else 0
         if v1 > v2:
            return 1
         elif v1 <v2:
            return -1
      return 0
ob1 = Solution()
print(ob1.compareVersion("1.0.1","1.0"))

輸入

"1.0.1"
"1.0"

輸出

1

更新於:2020年5月2日

3K+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告