यह समस्या, हमें लोअरकेस वर्णों की एक स्ट्रिंग दी गई है। और हमें स्ट्रिंग में आने वाले प्रत्येक वर्ण की आवृत्तियों को खोजना होगा। समस्या के बारे में अधिक बताते समय नीचे दिया गया उदाहरण।
Input : “jskdk” Output : j 1 s 1 k 2 d 1
स्पष्टीकरण - स्ट्रिंग में, वर्ण j, s, d एक बार और k दो बार आते हैं। इसलिए, मुद्रित आउटपुट उपरोक्त परिणाम देता है।
आइए अब इस समस्या को हल करने के लिए एक तर्क बनाते हैं। जैसा कि कहा गया है कि हमें स्ट्रिंग में प्रत्येक वर्ण के घटित होने की आवृत्ति का पता लगाना है। एक तार्किक तरीका यह है कि स्ट्रिंग को पार किया जाए और किसी वर्ण के घटित होने की आवृत्ति की गणना की जाए और उसे एक सरणी में संग्रहीत किया जाए और फिर वर्ण को उनके घटित होने की आवृत्ति के साथ प्रिंट किया जाए।
एल्गोरिदम
Step 1 : Create an array of size 26 that stores the frequency of characters in the string. Step 2 : print all the characters along with their frequency of occurrence from the array.
उदाहरण
आइए अब इस समस्या का समाधान खोजने के लिए एक प्रोग्राम बनाएं,
#include <bits/stdc++.h> using namespace std; int main(){ string str = "tutorialspoint"; int n = str.size(); 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'] != 0) { cout<<str[i]<<"\t"<<frequency[str[i] - 'a']<<"\n"; frequency[str[i] - 'a'] = 0; } } return 0; }
आउटपुट
t 3 u 1 o 2 r 1 i 2 a 1 l 1 s 1 p 1 n 1