কম্পিউটার

C++ এ একটি স্ট্রিং-এ অক্ষরের প্রাইম ফ্রিকোয়েন্সির XOR


এই সমস্যায়, আমাদেরকে অক্ষরগুলির একটি স্ট্রিং দেওয়া হয়েছে, আমাদের কাজ হল স্ট্রিংয়ের অক্ষরের ফ্রিকোয়েন্সিগুলির XOR মুদ্রণ করা যার সংঘটনের ফ্রিকোয়েন্সি একটি মৌলিক সংখ্যা৷

সমস্যাটি বোঝার জন্য একটি উদাহরণ দেওয়া যাক,

ইনপুট৷ - টিউটোরিয়ালপয়েন্ট

আউটপুট

এখানে, আমরা স্ট্রিংয়ের প্রতিটি অক্ষরের সংঘটনের ফ্রিকোয়েন্সি পরীক্ষা করব এবং তারপরে সমস্ত অক্ষরের XOR খুঁজে বের করব যার ফ্রিকোয়েন্সি একটি মৌলিক সংখ্যা। এর জন্য প্রাইম ফ্রিকোয়েন্সির একটি অ্যারে তৈরি করবে। তারপরে আমরা একটি ম্যাপে একটি স্ট্রিংয়ের অক্ষরের ফ্রিকোয়েন্সি সংরক্ষণ করব এবং তারপরে প্রাইম ফ্রিকোয়েন্সি অ্যারের সাথে ম্যাচ করব। যদি একটি মিল পাওয়া যায় তবে xor পাওয়া যায়, মানচিত্রের সমস্ত উপাদানে লুপ করার পরে আমরা প্রয়োজনীয় XOR খুঁজে পেতে পারি।

উদাহরণ

আমাদের সমাধানের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম,

#include <bits/stdc++.h>
using namespace std;
void findPrimes(bool prime[], int p_size){
   prime[0] = false;
   prime[1] = false;
   for (int p = 2; p * p <= p_size; p++) {
      if (prime[p]) {
         for (int i = p * 2; i <= p_size; i += p)
            prime[i] = false;
      }
   }
}
int findPrimeXOR(string s){
   bool prime[100005];
   memset(prime, true, sizeof(prime));
   findPrimes(prime, 10005);
   int i, j;
   map<char, int> charFreq;
   for (i = 0; i < s.length(); i++)
      charFreq[s[i]]++;
   int result = 0;
   int flag = 0;
   for (auto i = charFreq.begin(); i != charFreq.end(); i++) {
      if (prime[i->second]) {
         result = result ^ i->second;
         flag = 1;
      }
   }
   if (!flag)
      return -1;
   return result;
}
int main(){
   string s = "tutorialspoint";
   cout<<"The XOR of frequencies of character which have prime frequencies is : ";
   cout<<findPrimeXOR(s);
   return 0;
}

আউটপুট

The XOR of frequencies of character which have prime frequencies is : 3

  1. C++ তে বিজোড় ফ্রিকোয়েন্সি থাকা অক্ষর প্রিন্ট করুন

  2. C++ এ getline (স্ট্রিং)

  3. C++ এ স্ট্রিং এর সমস্ত অক্ষর টগল করুন

  4. C++ এ প্রাইম ফ্রিকোয়েন্সি সহ অ্যারে উপাদান?