สมมติว่าเราต้องเปรียบเทียบสองหมายเลขเวอร์ชัน 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