কম্পিউটার

C++ এ ন্যূনতম স্ট্রিং


ধরুন আমাদের একই দৈর্ঘ্যের দুটি স্ট্রিং s এবং t আছে এবং উভয়ই ছোট হাতের অক্ষরে। বিবেচনা করুন আমরা প্রথমে s কে যেকোনো ক্রমানুসারে পুনর্বিন্যাস করেছি, তারপর s-কে t-এ পরিণত করার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যা গণনা করুন।

সুতরাং, যদি ইনপুটটি s ="eccynue", t ="science" এর মত হয়, তাহলে আউটপুট হবে 2 যেন আমরা "eccynue" কে "yccence" তে পুনর্বিন্যাস করি, তারপর y এর পরিবর্তে s এবং i এর সাথে দ্বিতীয় গ, এটি হবে "বিজ্ঞান"।

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

  • ret :=0

  • s-এর ফ্রিকোয়েন্সি ধরে রাখতে cnt1 এবং t-এর ফ্রিকোয়েন্সি ধরে রাখার জন্য cnt2 দুটি অ্যারে নির্ধারণ করুন

  • আরম্ভ করার জন্য i :=0, যখন i <26, আপডেট (i 1 দ্বারা বৃদ্ধি), −

    • ret :=ret + max(cnt1[i] - cnt2[i], 0)

  • রিটার্ন রিটার্ন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int solve(string s, string t) {
      int ret = 0;
      vector <int> cnt1(26);
      vector <int> cnt2(26);
      for(int i = 0; i < s.size(); i++){
         cnt1[s[i] - 'a']++;
      }
      for(int i = 0; i < t.size(); i++){
         cnt2[t[i] - 'a']++;
      }
      for(int i = 0; i < 26; i++){
         ret += max(cnt1[i] - cnt2[i], 0);
      }
      return ret;
   }
};
int main(){
   Solution ob;
   cout << (ob.solve("eccynue", "science"));
}

ইনপুট

"eccynue", "science"

আউটপুট

2

  1. C++ এ ন্যূনতম নাইট মুভ

  2. C++ এ একটি স্ট্রিং প্যালিনড্রোম তৈরি করতে ন্যূনতম সংখ্যক মুছে ফেলা।

  3. C++ এ একটি স্ট্রিং টোকেনাইজ করা

  4. C++ এ একটি স্ট্রিংকে টোকেনাইজ করবেন?