इस समस्या में, हमें लोअरकेस वर्णों की एक स्ट्रिंग दी गई है। और हमें स्ट्रिंग में आने वाले प्रत्येक वर्ण की आवृत्तियाँ ढूंढनी हैं। नीचे दिया गया उदाहरण इस समस्या के बारे में अधिक बताता है।
Input : "jskdk" Output : j 1 s 1 k 2 d 1
व्याख्या - स्ट्रिंग में, वर्ण j, s, d एक बार आते हैं और k दो बार आता है। इसलिए, प्रिंट किया गया आउटपुट उपरोक्त परिणाम देता है।
अब आइए इस समस्या को हल करने के लिए एक तर्क बनाते हैं। जैसा कि कहा गया है हमें स्ट्रिंग में प्रत्येक वर्ण की घटना की आवृत्ति ढूंढनी है। एक तार्किक तरीका है स्ट्रिंग को ट्रैवर्स करना और एक वर्ण की घटना की आवृत्ति गिनना और इसे एक सरणी में संग्रहीत करना और फिर वर्ण को उनकी घटना की आवृत्ति के साथ प्रिंट करना।
एल्गोरिदम
चरण 1 : आकार 26 की एक सरणी बनाएं जो स्ट्रिंग में वर्णों की आवृत्ति संग्रहीत करे। चरण 2 : सरणी से सभी वर्णों को उनकी घटना की आवृत्ति के साथ प्रिंट करें।
उदाहरण
अब, आइए इस समस्या का समाधान खोजने के लिए एक प्रोग्राम बनाते हैं,
#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