मान लीजिए हमारे पास दो संस्करण संख्याएं 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 के लिए डॉट द्वारा अलग की गई संख्याओं की एक सरणी
- i के लिए 0 से version1_arr और version2_arr के आकार के अधिकतम तक की रेंज में -
- v1 := version1_arr[i] यदि i < version1_arr का आकार, अन्यथा 0
- v2 := version2_arr[i] यदि i < version2_arr का आकार, अन्यथा 0
- यदि v1 > v2, तो 1 लौटाएं, अन्यथा जब v1 < v2, -1 लौटाएं
- 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