इस प्रॉब्लम में हमें यूजर द्वारा string str दिया जाता है। और हमें केवल उन्हीं अक्षरों को प्रिंट करना होता है जिनकी आवृत्ति विषम संख्या में होती है।
इस समस्या को हल करने के लिए, हमें एक स्ट्रिंग में एक चरित्र की घटना की कुल आवृत्ति का पता लगाना होगा। और स्ट्रिंग के केवल उन्हीं वर्णों को प्रिंट करें जिनमें घटना की विषम आवृत्तियाँ हों।
आइए विषय को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं -
Input : adatesaas. Output : dte
स्पष्टीकरण −उनके घटित होने की आवृत्ति वाले पात्र हैं -
a | 4 |
d | 1 |
t | 1 |
e | 1 |
s | 2 |
विषम आवृत्ति वाले वर्ण d, t, e. . हैं
एल्गोरिदम
आइए अब इस समस्या को हल करने के लिए एक एल्गोरिथम बनाने का प्रयास करें -
Step 1 : Traverse the string and count the number of occurrences on characters of the string in an array. Step 2 : Traverse the frequency array and print only those characters whose frequency of occurrence is odd.
उदाहरण
आइए इस एल्गोरिथम के आधार पर एक प्रोग्राम बनाएं -
#include <bits/stdc++.h> using namespace std; int main(){ string str = "asdhfjdedsa"; int n = str.length(); int frequency[26]; memset(frequency, 0, sizeof(frequency)); for (int i = 0; i < n; i++) frequency[str[i] - 'a']++; for (int i = 0; i < n; i++) { if (frequency[str[i] - 'a'] % 2 == 1) { cout << str[i]<<" , "; } } return 0; }
आउटपुट
d , h , f , j , d , e , d