मान लीजिए कि हमारे पास एक गैर-ऋणात्मक पूर्णांक है; हम अधिकतम मूल्यवान संख्या प्राप्त करने के लिए दो अंकों को एक बार में स्वैप कर सकते हैं। हमें वह अधिकतम मूल्य प्राप्त करना होगा जो हम प्राप्त कर सकते हैं। तो अगर इनपुट 2736 जैसा है तो आउटपुट 7236 होगा। तो यहां हम 2 और 7 की अदला-बदली कर रहे हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- num :=संख्या में से प्रत्येक अंक को काटें, और एक सूची बनाएं
- num1 :=अंक को उल्टे क्रम में क्रमबद्ध करें
- सूचकांक:=0
- जबकि सूचकांक <संख्या की लंबाई
- यदि num1[index], num[index]
- . के समान नहीं है
- a :=सूचकांक (सूचकांक + 1) से अंत तक संख्या का उप-सरणी
- रिवर्स ए
- a :=a की लंबाई – num का इंडेक्स [इंडेक्स] a + इंडेक्स + 1 – 1
- संख्या [अनुक्रमणिका], संख्या [ए]:=संख्या [ए], संख्या [अनुक्रमणिका]
- लूप तोड़ें
- सूचकांक 1 से बढ़ाएं
- यदि num1[index], num[index]
- संख्या में मौजूद संख्याओं को मिलाइए और इसे पूर्णांक बनाइए
- परिणाम लौटाएं।
उदाहरण (पायथन)
एक बेहतर समझ प्राप्त करने के लिए आइए निम्नलिखित कार्यान्वयन को देखें -
class Solution: def maximumSwap(self, num): num = list(map(int,list(str(num)))) num1 = sorted(num,reverse=True) index=0 while index<len(num): if num1[index]!=num[index]: a = num[index+1:] a.reverse() a=len(a) - a.index(num1[index])+index+1 -1 num[index],num[a] = num[a],num[index] break index+=1 return int("".join(str(x) for x in num)) ob1 = Solution() print(ob1.maximumSwap(5397))
इनपुट
5397
आउटपुट
9357