কম্পিউটার

C++-এ ইংরেজি থেকে মূল অঙ্কগুলি পুনর্গঠন করুন


ধরুন আমাদের কাছে একটি অ-খালি স্ট্রিং রয়েছে যেখানে 0-9 সংখ্যার একটি বহিরাগত ইংরেজি উপস্থাপনা রয়েছে, সংখ্যাগুলিকে ঊর্ধ্বক্রমে আউটপুট করুন। কিছু বৈশিষ্ট্য আছে -

  • ইনপুট বৈধ হওয়ার গ্যারান্টিযুক্ত এবং এটির আসল সংখ্যায় রূপান্তরিত হতে পারে। তার মানে অবৈধ ইনপুট যেমন "abc" বা "zerone" অনুমোদিত নয়৷
  • ইনপুট দৈর্ঘ্য 50,000 এর কম।

সুতরাং ইনপুট যদি "fviefuro" এর মত হয়, তাহলে আউটপুট হবে 45।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • সংখ্যা :=একটি অ্যারে যা ইংরেজি অক্ষরে 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 রেঞ্জের জন্য, কর
      গণনা করার জন্য 0 পরিসরে j এর জন্য [i]
      • উত্তর :=ans + অক্ষর (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. C++-এ K ডিজিটগুলি সরান

  2. C++ এ ফোন ডিজিট থেকে সম্ভাব্য সব শব্দ প্রিন্ট করুন

  3. C++ এ একটি অ্যারের অঙ্ক থেকে গঠিত দুটি সংখ্যার ন্যূনতম যোগফল

  4. মূল এবং নেট মূল্য থেকে GST গণনা করার জন্য C++ প্রোগ্রাম