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

सी++ में अंग्रेजी से मूल अंकों का पुनर्निर्माण करें


मान लीजिए कि हमारे पास एक गैर-रिक्त स्ट्रिंग है जिसमें अंकों का 0-9 अंकों का एक आउट-ऑफ-ऑर्डर अंग्रेजी प्रतिनिधित्व है, अंकों को आरोही क्रम में आउटपुट करता है। कुछ गुण हैं -

  • इनपुट के वैध होने की गारंटी है और इसे इसके मूल अंकों में बदला जा सकता है। इसका मतलब है कि "एबीसी" या "शून्य" जैसे अमान्य इनपुट की अनुमति नहीं है।
  • इनपुट लंबाई 50,000 से कम है।

तो अगर इनपुट "fviefuro" जैसा है, तो आउटपुट 45 होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • nums :=एक एरे जिसमें 0 से 9 तक अंग्रेजी अक्षरों में संख्याएं होती हैं।
  • 10 आकार की एक सरणी गणना करें
  • उत्तर:=एक खाली स्ट्रिंग। और n:=स्ट्रिंग का आकार।
  • मैं के लिए 0 से n -1 की सीमा में, करो
    • अगर s[i] ='z', तो गिनती [0] को 1 से बढ़ाएं
    • अगर s[i] ='w', तो गिनती [2] को 1 से बढ़ाएं
    • अगर s[i] ='g', तो गिनती [8] को 1 से बढ़ाएं
    • अगर s[i] ='x', तो गिनती [6] को 1 से बढ़ाएं
    • अगर s[i] ='v', तो गिनती [5] को 1 से बढ़ाएं
    • अगर s[i] ='o', तो गिनती [1] 1 से बढ़ाएं
    • अगर s[i] ='s', तो गिनती [7] को 1 से बढ़ा दें
    • अगर s[i] ='f', तो गिनती [4] को 1 से बढ़ाएं
    • अगर s[i] ='h', तो गिनती [3] को 1 से बढ़ाएं
    • अगर s[i] ='i', तो गिनती [9] को 1 से बढ़ाएं
  • गिनती[7] :=गिनती[7] - गिनती[6]
  • गिनती[5] :=गिनती[5] - गिनती[7]
  • गिनती[4] :=गिनती[4] - गिनती[5]
  • गिनती[1]:=गिनती[1] - (गिनती[2] + गिनती[4] + गिनती[0])
  • गिनती[3] :=गिनती[3] - गिनती[8]
  • गिनती[9] :=गिनती[9] - (गिनती[5] + गिनती[6] + गिनती[8])
  • 0 से 9 की श्रेणी में i के लिए, करें
    • जे के लिए 0 रेंज में गिनने के लिए[i]
      • उत्तर:=उत्तर + (i + '0') का वर्ण
  • वापसी उत्तर

उदाहरण(C++)

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   string originalDigits(string s) {
      string nums[]= {"zero", "one", "two", "three", "four", "five", "six", "seven","eight", "nine"};
      vector <int> cnt(10);
      string ans = "";
      int n = s.size();
      for(int i = 0; i < n; i++){
         if(s[i] == 'z')cnt[0]++;
         if(s[i] == 'w') cnt[2]++;
         if(s[i] == 'g')cnt[8]++;
         if(s[i] == 'x')cnt[6]++;
         if(s[i] == 'v')cnt[5]++;
         if(s[i] == 'o')cnt[1]++;
         if(s[i] == 's')cnt[7]++;
         if(s[i] == 'f')cnt[4]++;
         if(s[i] == 'h')cnt[3]++;
         if(s[i] == 'i') cnt[9]++;
      }
      cnt[7] -= cnt[6];
      cnt[5] -= cnt[7];
      cnt[4] -= cnt[5];
      cnt[1] -= (cnt[2] + cnt[4] + cnt[0]);
      cnt[3] -= cnt[8];
      cnt[9] -= (cnt[5] + cnt[6] + cnt[8]);
      for(int i = 0; i < 10; i++){
         for(int j = 0; j < cnt[i]; j++){
            ans += (char)(i + '0');
         }
      }
      return ans;
   }
};
main(){
   Solution ob;
   cout << ob.originalDigits("fviefuro");
}

इनपुट

"fviefuro"

आउटपुट

"45"

  1. सी++ में फोन अंकों से सभी संभावित शब्दों को प्रिंट करें

    इस समस्या में, हमें एक नंबर दिया जाता है और हमें उन सभी शब्दों को प्रिंट करना होता है जो पुराने जमाने के मोबाइल कीबोर्ड में उन शब्दों को दबाने से बनते हैं। आज हम जिस QWERTY कीबोर्ड शैली का उपयोग करते हैं, उससे हम काफी परिचित हैं। लेकिन QWERTY कीपैड के आविष्कार से पहले फोन में 12 बटन वाले कीपैड लगे

  1. C++ में किसी सरणी के अंकों से बनने वाली दो संख्याओं का न्यूनतम योग

    विवरण अंकों की एक सरणी को देखते हुए जिसमें 0 से 9 तक के मान होते हैं। कार्य सरणी के अंकों से बनने वाली दो संख्याओं का न्यूनतम संभव योग ज्ञात करना है। कृपया ध्यान दें कि हमें दिए गए सरणी के सभी अंकों का उपयोग करना है उदाहरण यदि इनपुट ऐरे {7, 5, 1, 3, 2, 4} है तो न्यूनतम योग 382 है, क्योंकि हम दो नं

  1. मूल और शुद्ध कीमतों से जीएसटी की गणना करने के लिए सी++ प्रोग्राम

    एक इनपुट के रूप में मूल लागत और शुद्ध मूल्य को देखते हुए और कार्य जीएसटी प्रतिशत की गणना करना और परिणाम प्रदर्शित करना है GST का मतलब गुड्स एंड सर्विस टास्क है। यह हमेशा उत्पाद के शुद्ध मूल्य में शामिल होता है और जीएसटी प्रतिशत की गणना करने से पहले हमें जीएसटी राशि की गणना करने की आवश्यकता होती है