Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

अधिकतम अंतर आप C++ में एक पूर्णांक बदलने से प्राप्त कर सकते हैं

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

  • 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

  1. Rogers 5G:आप इसे कब और कहां प्राप्त कर सकते हैं

    रोजर्स कम्युनिकेशंस नेटवर्क कनाडा के बड़े पैमाने पर 97 प्रतिशत को कवर करता है और दुनिया भर में 5G लॉन्च करने वाले कई मोबाइल वाहकों में से एक है। रोजर्स ने 2019 में 5G परिनियोजन में $4 बिलियन अमरीकी डालर से अधिक और 2020 में $2 बिलियन से अधिक का निवेश किया। वे वर्तमान में एक 5G नेटवर्क शुरू करने की प

  1. क्या आप iPhone या iPad के लिए Microsoft IE प्राप्त कर सकते हैं?

    चाहे आप सफारी, क्रोम, फ़ायरफ़ॉक्स, या कुछ और पसंद करते हैं, आप अपने सभी उपकरणों पर अपने पसंदीदा वेब ब्राउज़र का उपयोग करना चाहेंगे। लेकिन क्या होता है यदि आपका पसंदीदा वेब ब्राउज़र माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर (इसके संक्षिप्त नाम, आईई द्वारा भी जाना जाता है) है? IE डेस्कटॉप कंप्यूटर पर बहुत अच्छा

  1. आप Windows 10 में सहायता कैसे प्राप्त कर सकते हैं

    चाहे आप एक नए विंडोज उपयोगकर्ता हों या आप दशकों से पीसी के साथ काम कर रहे हों, ऐसे समय होते हैं जब हम सभी को थोड़ी मदद की जरूरत होती है। प्रारंभिक कंप्यूटरों ने आपको केवल मैनुअल को संदर्भित करने के लिए प्रेरित किया होगा, लेकिन आधुनिक प्रणालियों के पास सहायता प्रदान करने के अधिक परिष्कृत तरीकों तक पह