मान लीजिए कि हमारे पास एक पूर्णांक संख्या है। हम निम्नलिखित चरणों को ठीक दो बार लागू करेंगे, चरण इस प्रकार हैं -
-
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