Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 버전 번호 비교


두 버전 번호 version1과 version2를 비교해야 한다고 가정합니다. version1> version2이면 1을 반환합니다. 그렇지 않으면 버전1 <버전2가 -1을 반환할 때; 그렇지 않으면 0을 반환합니다. 버전 문자열이 비어 있지 않고 숫자와 점(.) 문자만 포함한다고 가정할 수 있습니다. 점 문자는 소수점을 나타내지 않으며 숫자 시퀀스를 구분하는 데 사용됩니다. 예를 들어, 2.5는 "2.5" 또는 "버전 3의 중간"이 아니라 두 번째 1단계 개정의 다섯 번째 2단계 개정입니다.

버전 번호의 각 수준에 대한 기본 개정 번호는 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에 대해 -

    • v1 :=version1_arr[i] if i

    • v2 :=version2_arr[i] if i

    • v1> v2이면 1을 반환하고, 그렇지 않으면 v1

  • 0 반환

예제(파이썬)

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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