একটি ইন্টিজার num দেওয়া আছে। দুবার অপারেশন করব: একটি ডিজিট x বাছাই করব, অন্য ডিজিট y দিয়ে সব x রিপ্লেস করব (লিডিং জিরো নয়, মান ০ নয়)। প্রথম ফলাফল a, দ্বিতীয় b। |a-b| সর্বোচ্চ করব।
ইনপুট: 555 → আউটপুট: 888 (a=999, b=111)
সমাধানের ধাপগুলো:
getMax(x): বাম থেকে প্রথম non-9 ডিজিট খুঁজে সেটাকে ৯ করবgetMin(x):যদি প্রথম ডিজিট ১ নয়, তবে সেটাকে ১ করব
যদি প্রথম ডিজিট ১ হয়, তবে দ্বিতীয় non-0/1 ডিজিট খুঁজে ০ করব
abs(getMax(num) - getMin(num))রিটার্ন করব
উদাহরণ
নিচের কোডটি দেখুন −
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int getMax(int x) {
string s = to_string(x);
char a = '9';
int i = 0;
while (i < s.size() && s[i] == '9')
i++;
if (i < s.size())
a = s[i];
for (int i = 0; i < s.size(); i++) {
if (s[i] == a)
s[i] = '9';
}
return stoi(s);
}
int getMin(int x) {
string s = to_string(x);
char a;
if (s[0] != '1') {
a = s[0];
for (int i = 0; i < s.size(); i++) {
if (s[i] == a)
s[i] = '1';
}
} else {
if (s.size() == 1)
return 1;
int i = 0;
a = '1';
while (i < s.size() && s[i] <= '1')
i++;
if (i < s.size())
a = s[i];
for (int i = 1; i < s.size(); i++) {
if (s[i] == a)
s[i] = '0';
}
}
return stoi(s);
}
int maxDiff(int num) {
int a = getMax(num);
int b = getMin(num);
return abs(a - b);
}
};
int main() {
Solution ob;
cout << (ob.maxDiff(666));
}
ইনপুট
666
আউটপুট
888