Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में एक स्ट्रिंग में वर्णों की प्राइम फ़्रीक्वेंसी का XOR


इस समस्या में, हमें वर्णों की एक स्ट्रिंग दी जाती है, हमारा कार्य स्ट्रिंग के वर्णों की आवृत्तियों के XOR को प्रिंट करना है, जिनकी आवृत्ति एक अभाज्य संख्या है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट - TutorialsPoint

आउटपुट -

यहां, हम स्ट्रिंग के प्रत्येक वर्ण के घटित होने की आवृत्ति की जांच करेंगे और फिर उन सभी वर्णों का 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. सी ++ में गेटलाइन (स्ट्रिंग)

    इसका उपयोग स्ट्रीम से वर्णों को बिना स्वरूपित इनपुट के रूप में निकालने के लिए किया जाता है और उन्हें सी-स्ट्रिंग के रूप में s में संग्रहीत करता है, जब तक कि निकाला गया वर्ण परिसीमन वर्ण नहीं होता है, या n वर्ण s (समाप्त अशक्त वर्ण सहित) को लिखे जाते हैं। घोषणा इस प्रकार है: basic_istream& getlin

  1. सी++ में स्ट्रिंग में सभी वर्णों को टॉगल करें

    यह प्रोग्राम स्ट्रिंग के कैरेक्टर को अपरकेस में ट्रांसलेट करता है। हालाँकि, यह कार्य c++ क्लास लाइब्रेरी की toUpper() विधि का उपयोग करके आसानी से प्राप्त किया जा सकता है। लेकिन इस कार्यक्रम में, हम इसे अपरकेस में वर्णों के ASCII मान की गणना करके करते हैं। एल्गोरिथम इस प्रकार है; एल्गोरिदम START &nbs

  1. सी ++ में प्रमुख आवृत्तियों वाले ऐरे तत्व?

    सरणी समान डेटा प्रकार के तत्वों का एक कंटेनर है। प्राइम फ़्रीक्वेंसी इसका मतलब है कि सरणी के तत्व की घटना की संख्या एक प्रमुख संख्या है। तो, इन परिभाषाओं के आधार पर अभाज्य आवृत्तियों वाले सरणी तत्वों को खोजने में समस्या। हमें सरणी की एक स्ट्रिंग दी गई है। हमें वर्णों की आवृत्ति का पता लगाना होगा