কম্পিউটার টিউটোরিয়াল

C++-এ Reconstruct Original Digits from English

এই সমস্যায় আউট-অফ-অর্ডার ইংরেজি শব্দের একটি স্ট্রিং দেওয়া থাকলে (যে ০-৯ ডিজিটগুলোর প্রতিনিধিত্ব করে), মূল ডিজিটগুলো অ্যাসেন্ডিং অর্ডারে আউটপুট করতে হবে।

উদাহরণ: "fviefuro" -> আউটপুট "45" (four, five)।

সমাধানের পদ্ধতি (Unique Character Counting)

কিছু ডিজিটের স্পেলিং-এ ইউনিক ক্যারেক্টার থাকে যা শুধু সেটিতে পাওয়া যায়:

  • z -> zero (0)
  • w -> two (2)
  • u -> four (4)
  • x -> six (6)
  • g -> eight (8)
এগুলো কাউন্ট করে সরাসরি ডিজিট বের করা যায়। বাকিগুলো অন্যদের থেকে বাদ দিয়ে বের করা যায়:
  • h -> three (3) - eight বাদ দিয়ে
  • f -> five (5) - four বাদ দিয়ে
  • s -> seven (7) - six বাদ দিয়ে
  • o -> one (1) - zero, two, four বাদ দিয়ে
  • i -> nine (9) - five, six, eight বাদ দিয়ে

উদাহরণ (C++)

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    string originalDigits(string s) {
        vector<int> cnt(10, 0);
        for (char c : s) {
            if (c == 'z') cnt[0]++;
            else if (c == 'w') cnt[2]++;
            else if (c == 'u') cnt[4]++;
            else if (c == 'x') cnt[6]++;
            else if (c == 'g') cnt[8]++;
            else if (c == 'h') cnt[3]++; // three (after eight)
            else if (c == 'f') cnt[5]++; // five (after four)
            else if (c == 's') cnt[7]++; // seven (after six)
            else if (c == 'o') cnt[1]++; // one (after zero, two, four)
            else if (c == 'i') cnt[9]++; // nine (after five, six, eight)
        }
        // Adjust for overlaps
        cnt[3] -= cnt[8]; // h in three, eight
        cnt[5] -= cnt[4]; // f in five, four
        cnt[7] -= cnt[6]; // s in seven, six
        cnt[1] -= (cnt[0] + cnt[2] + cnt[4]); // o in one, zero, two, four
        cnt[9] -= (cnt[5] + cnt[6] + cnt[8]); // i in nine, five, six, eight

        string ans;
        for (int i = 0; i <= 9; i++)
            ans.append(cnt[i], '0' + i);
        return ans;
    }
};

int main() {
    Solution ob;
    cout << ob.originalDigits("fviefuro") << endl;
    return 0;
}

ইনপুট

"fviefuro"

আউটপুট

45
  1. C++-এ K ডিজিট রিমুভ করে সবচেয়ে ছোট সংখ্যা বানানো

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

  3. অ্যারে থেকে দুটি সংখ্যা বানিয়ে ন্যূনতম যোগফল (C++)

  4. C++ প্রোগ্রাম: মূল্য ও নেট প্রাইস থেকে GST ক্যালকুলেট করা