इस समस्या में, हमें वर्णों की एक स्ट्रिंग दी जाती है, हमारा कार्य स्ट्रिंग के वर्णों की आवृत्तियों के 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