কম্পিউটার

C++ এ কাস্টম বাছাই স্ট্রিং


ধরুন আমাদের কাছে S এবং T দুটি স্ট্রিং আছে এগুলি ছোট হাতের অক্ষর দিয়ে গঠিত। S-তে কোনো অক্ষর একাধিকবার আসে না। S কে আগে কিছু কাস্টম ক্রমে সাজানো হয়েছিল। আমাদের T-এর অক্ষরগুলিকে পারমিউট করতে হবে যাতে তারা S সাজানো ক্রম অনুসারে মেলে। আরও নির্দিষ্টভাবে, যদি S-তে y-এর আগে x হয়, তাহলে ফিরে আসা স্ট্রিং-এ y-এর আগে x আসবে।

সুতরাং যদি S =“cba” এবং T =“abcd”, তাহলে আউটপুট হবে “cbad”। এখানে "a", "b", "c" S তে দেখা যাচ্ছে, তাই "a", "b", "c" এর ক্রম "c", "b", এবং "a" হতে হবে। যেহেতু "d" S-তে প্রদর্শিত হয় না, এটি T-এর যেকোনো অবস্থানে থাকতে পারে। "dcba", "cdba", "cbda"ও বৈধ আউটপুট।

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

  • খালি স্ট্রিং হিসাবে ret সেট করুন

  • একটি মানচিত্র m সংজ্ঞায়িত করুন এবং T-এ উপস্থিত প্রতিটি অক্ষরের ফ্রিকোয়েন্সি m

    এ সংরক্ষণ করুন
  • i এর জন্য 0 থেকে S – 1

    এর আকার
    • x :=S[i]

    • j-এর জন্য 0 থেকে m[x] – 1

      পরিসরে
      • ret :=ret + x

    • m[x] :=0

  • প্রতিটি জোড়ার জন্য এটি m −

    • যদি এর মান হয়> 0, তাহলে

      • i এর জন্য রেঞ্জ 0 থেকে এর মান - 1

        • ret :=এটার ret concatenate কী

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

উদাহরণ(C++)

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   string customSortString(string S, string T) {
      string ret = "";
      unordered_map <char, int> m;
      for(int i = 0; i < T.size(); i++){
         m[T[i]]++;
      }
      for(int i = 0; i < S.size(); i++){
         char x = S[i];
         for(int j = 0; j < m[x]; j++){
            ret += x;
         }
         m[x] = 0;
      }
      unordered_map <char, int> :: iterator it = m.begin();
      while(it != m.end()){
         if(it->second > 0){
            for(int i = 0; i < it->second; i++)ret += it->first;
         }
         it++;
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.customSortString("cba", "abcd"));
}

ইনপুট

"cba"
"abcd"

আউটপুট

cbad

  1. C++ এ বিকল্প লোয়ার আপার স্ট্রিং সাজান

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

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

  4. কাস্টম ক্রমে স্ট্রিং সাজানোর জন্য পাইথন প্রোগ্রাম