Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

So sánh số phiên bản trong Python


Giả sử ta phải so sánh hai số phiên bản version1 và version2. Nếu version1 > version2 trả về 1; ngược lại nếu version1 < version2 trả về -1; ngược lại trả về 0. Ta có thể giả định chuỗi phiên bản không rỗng và chỉ chứa chữ số và dấu chấm (.). Dấu chấm không đại diện cho dấu thập phân, dùng để tách chuỗi số. Ví dụ, 2.5 không phải "hai rưỡi" hay "nửa đường đến phiên bản ba", nó là bản sửa đổi cấp hai thứ năm của bản sửa đổi cấp một thứ hai.

Ta có thể giả định số phiên bản mặc định cho mỗi cấp độ là 0. Ví dụ, phiên bản 3.4 có số sửa đổi 3 và 4 cho cấp một và hai. Cấp ba và bốn đều là 0.

Vì vậy, nếu đầu vào là version1 = “1.0.1” và version2 = “1”, sẽ trả về +1.

Để giải quyết, ta làm theo các bước −

  • version1_arr = mảng số tách bằng chấm cho version1
  • version2_arr = mảng số tách bằng chấm cho version2
  • với i từ 0 đến max(len(version1_arr), len(version2_arr)) −
    • v1 := version1_arr[i] nếu i < len(version1_arr), ngược lại 0
    • v2 := version2_arr[i] nếu i < len(version2_arr), ngược lại 0
    • nếu v1 > v2 trả về 1, ngược lại nếu v1 < v2 trả về -1
  • trả về 0

Ví dụ (Python)

Xem triển khai sau để hiểu rõ hơn −

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"))

Đầu vào

"1.0.1" "1.0"

Kết quả

1