একটি সংখ্যা দেওয়া থাকলে, সর্বোচ্চ একবার দুটি অঙ্ক স্ব্যাপ করে সম্ভাব্য সর্ববৃহৎ সংখ্যা বের করতে হবে।
উদাহরণ
ইনপুট: 678 → আউটপুট: 876
অ্যালগরিদম
- স্ট্রিং-এ রূপান্তর করুন।
- ডান থেকে বামে স্ক্যান করে সর্বোচ্চ অঙ্ক এবং তার ইনডেক্স ট্র্যাক করুন।
- যদি বর্তমান অঙ্ক সর্বোচ্চ চেয়ে ছোট হয়, সেটি এবং সর্বোচ্চ অঙ্কের ইনডেক্স সংরক্ষণ করুন।
- শেষে সেই দুটি স্ব্যাপ করুন।
সি++ ইমপ্লিমেন্টেশন
#include <bits/stdc++.h>
using namespace std;
int getLargestNumber(int n) {
string s = to_string(n);
int maxDigit = -1, maxIdx = -1, left = -1, right = -1;
for (int i = s.size() - 1; i >= 0; i--) {
if (s[i] > maxDigit) { maxDigit = s[i]; maxIdx = i; continue; }
if (s[i] < maxDigit) { left = i; right = maxIdx; }
}
if (left == -1) return n;
swap(s[left], s[right]);
return stoi(s);
}
int main() {
int n = 678;
cout << getLargestNumber(n) << endl; // 876
return 0;
}
আউটপুট
876