কম্পিউটার

C++ এ অন্য স্ট্রিং দ্বারা সংজ্ঞায়িত বর্ণানুক্রমিক ক্রম অনুসারে স্ট্রিংগুলির অ্যারে সাজান


ধরুন আমাদের স্ট্রিং এর একটি অ্যারে আছে, এবং রেফারেন্সের জন্য আরেকটি স্ট্রিং আছে। আমাদের রেফারেন্স স্ট্রিং নিতে হবে এবং রেফারেন্স স্ট্রিং এর অক্ষরের ক্রম ব্যবহার করে আমরা স্ট্রিং অ্যারে সাজাব। এখানে আমরা অ্যারের স্ট্রিংগুলি বিবেচনা করছি, এবং রেফারেন্স স্ট্রিংটি ছোট হাতের অক্ষরে রয়েছে৷

ধরুন স্ট্রিং অ্যারেটি এরকম:[“hello”, “programming”, “science”, “computer”, “india”], রেফারেন্স স্ট্রিংটি এরকম:“pigvxbskyhqzelutoacfjrndmw”, সাজানোর পর আউটপুট স্ট্রিং এরকম হবে [“programming” ”, “ভারত”, “বিজ্ঞান”, “হ্যালো”, “কম্পিউটার”]

কাজটি সহজ। আমাদের রেফারেন্স স্ট্রিংটি অতিক্রম করতে হবে, তারপর অক্ষরটিকে কী হিসাবে মানচিত্রে সংরক্ষণ করতে হবে এবং সূচকটিকে মান হিসাবে সংরক্ষণ করতে হবে। এখন স্ট্রিং বাছাই করতে, আমাদের সেই মানচিত্রের উপর ভিত্তি করে স্ট্রিংগুলি তুলনা করতে হবে, ASCII অক্ষর ক্রম নয়। মানচিত্রের সেই নির্দিষ্ট অক্ষরের সাথে ম্যাপ করা মানগুলির তুলনা করুন, যদি c1 অক্ষর c2 এর আগে উপস্থিত হয়, তাহলে c1

উদাহরণ

#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <vector>
using namespace std;
unordered_map<char, int> char_map;
bool compare(string c1, string c2) {
   for (int i = 0; i < min(c1.size(), c2.size()); i++) {
      if (char_map[c1[i]] == char_map[c2[i]])
         continue;
      return char_map[c1[i]] < char_map[c2[i]];
   }
   return c1.size() < c2.size();
}
int main() {
   string str = "pigvxbskyhqzelutoacfjrndmw";
   vector<string> v{ "hello", "programming", "science", "computer", "india" };
   char_map.clear();
   for (int i = 0; i < str.size(); i++)
   char_map[str[i]] = i;
   sort(v.begin(), v.end(), compare);
   // Print the strings after sorting
   for (auto x : v)
   cout << x << " ";
}
সাজানোর পরে স্ট্রিংগুলি মুদ্রণ করুন

আউটপুট

programming india science hello computer

  1. C++ এ অন্য অ্যারের দ্বারা সংজ্ঞায়িত ক্রম অনুসারে একটি অ্যারে সাজান

  2. C++ এ সেট বিটের গণনা অনুসারে একটি অ্যারে সাজান

  3. C++ স্ট্রিং এর অ্যারে

  4. C++ এ স্ট্রিং এর অ্যারে