মনে করুন একটি নন-নেগেটিভ পূর্ণসংখ্যা আছে; আমরা সর্বোচ্চ একবার দুটি ডিজিট সোয়াপ করে সর্বাধিক মানবান সংখ্যা পেতে পারি। আমাদের সেই সর্বাধিক মানবান সংখ্যাটি রিটার্ন করতে হবে। যেমন ইনপুট 2736 হলে আউটপুট হবে 7236। এখানে ২ এবং ৭ সোয়াপ করা হয়েছে।
এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব:
- num := সংখ্যাটির প্রতিটি ডিজিট আলাদা করে একটি তালিকা তৈরি করুন
- num1 := num কে রিভার্স সর্ট করুন
- index := 0
- যখন index < num দৈর্ঘ্য
- যদি num1[index] num[index] এর সমান না হয়
- a := num-এর সাবঅ্যারে index+1 থেকে শেষ পর্যন্ত
- a রিভার্স করুন
- a := a দৈর্ঘ্য - a-তে num1[index]-এর সূচক + index + 1 - 1
- num[index], num[a] := num[a], num[index]
- লুপ ব্রেক করুন
- index ১ বাড়ান
- যদি num1[index] num[index] এর সমান না হয়
- num-এ থাকা সংখ্যাগুলো জুড়ে একটি পূর্ণসংখ্যা তৈরি করুন
- ফলাফল রিটার্ন করুন।
উদাহরণ (পাইথন)
নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝতে:
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