मान लीजिए कि हमारे पास एक पूर्णांक संख्या है। हम निम्नलिखित चरणों को ठीक दो बार लागू करेंगे, चरण इस प्रकार हैं -
-
0 से 9 की सीमा में एक अंक x चुनें।
-
0 से 9 की सीमा में एक और अंक y भी चुनें। अंक y x के बराबर हो सकता है।
-
संख्या के दशमलव निरूपण में x की सभी घटनाओं को y से बदलें। नए पूर्णांक में कोई अग्रणी शून्य नहीं हो सकता, साथ ही नया पूर्णांक मान 0 का नहीं हो सकता।
अब मान लें कि a और b क्रमशः पहली और दूसरी बार संक्रियाओं को लागू करने के परिणाम हैं। फिर a और b के बीच अधिकतम अंतर ज्ञात करें।
इसलिए, यदि इनपुट 555 की तरह है, तो आउटपुट 888 होगा क्योंकि पहली बार x =5 और y =9 चुनें और नए पूर्णांक को a में संग्रहीत करें। दूसरी बार x =5 और y =1 चुनें और नए पूर्णांक को b में संग्रहित करें।
तो अब हमारे पास a =999 और b =111 है और अधिकतम अंतर =999 - 111 =888 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
फ़ंक्शन getMax() को परिभाषित करें, इसमें x लगेगा,
-
s :=x को स्ट्रिंग में बदलें
-
ए:='9'
-
मैं :=0
-
जबकि (i
-
(मैं 1 से बढ़ाइए)
-
-
अगर मैं
-
ए:=एस[i]
-
-
इनिशियलाइज़ करने के लिए:=0, जब i <साइज़ ऑफ़ s, अपडेट (i से 1 तक बढ़ाएँ), करें -
-
यदि s[i], a के समान है, तो -
-
एस[i] :='9'
-
-
-
संख्या के रूप में वापसी करें
-
फ़ंक्शन को परिभाषित करें getMin(), इसमें x लगेगा,
-
s :=x को स्ट्रिंग में बदलें
-
अगर s[0] '1' के बराबर नहीं है, तो -
-
ए:=एस[0]
-
इनिशियलाइज़ करने के लिए:=0, जब i <साइज़ ऑफ़ s, अपडेट (i से 1 तक बढ़ाएँ), करें -
-
यदि s[i], a के समान है, तो -
-
एस[i] :='1'
-
-
-
-
अन्यथा
-
यदि s का आकार 1 के समान है, तो -
-
वापसी 1
-
-
मैं :=0
-
ए:='1'
-
जबकि (i
-
(मैं 1 से बढ़ाइए)
-
-
अगर मैं
-
ए:=एस[i]
-
-
इनिशियलाइज़ i :=1 के लिए, जब i
-
यदि s[i], a के समान है, तो -
-
एस[i] :='0'
-
-
-
-
संख्या के रूप में वापसी करें
-
मुख्य विधि से निम्न कार्य करें -
-
a:=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', b;
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);
}
};
main(){
Solution ob;
cout << (ob.maxDiff(666));
} इनपुट
666
आउटपुट
888