สมมติว่าเราต้องเปรียบเทียบสองหมายเลขเวอร์ชัน version1 และ version2 หาก version1> version2 ให้คืนค่า 1; มิฉะนั้นเมื่อ version1
เราสามารถถือว่าหมายเลขรุ่นเริ่มต้นสำหรับแต่ละระดับของหมายเลขรุ่นเป็น 0 ตัวอย่างเช่น หมายเลขรุ่น 3.4 มีหมายเลขรุ่น 3 และ 4 สำหรับหมายเลขรุ่นระดับที่หนึ่งและสอง หมายเลขการแก้ไขระดับที่สามและสี่เป็นทั้ง 0
ดังนั้นหากอินพุตเป็นเหมือน version1 =“1.0.1” และ version2 =“1” ก็จะคืนค่า +1
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
version1_arr =อาร์เรย์ของตัวเลขคั่นด้วยจุดสำหรับ version1
-
version2_arr =อาร์เรย์ของตัวเลขคั่นด้วยจุดสำหรับ version2
-
สำหรับฉันอยู่ในช่วง 0 ถึงสูงสุดของขนาดของ version1_arr และขนาดของ version2_arr -
-
v1 :=version1_arr[i] if i
-
v2 :=version2_arr[i] if i
-
ถ้า v1> v2 ให้คืนค่า 1 มิฉะนั้น เมื่อ v1
-
-
คืนค่า 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