मान लीजिए हमारे पास एक स्ट्रिंग s है। s में अक्षर और अंक दोनों हैं। हमें प्रत्येक अंक की आवृत्ति ज्ञात करनी है और उन्हें प्रदर्शित करना है। ऐसा करने के लिए हम 10 आकार का एक सरणी बना सकते हैं प्रत्येक अंक (0 से 9) के लिए, प्रारंभ में सरणी में सभी तत्व 0 हैं, फिर जब भी हमें कोई अंक मिले बस उस इंडेक्स का मान बढ़ा दें और अंत में उन सभी को प्रिंट करें।
उदाहरण के लिए, यदि इनपुट s = "we85abc586wow236h69" है, तो आउटपुट होगा (Number 2, Freq 1) (Number 3, Freq 1) (Number 5, Freq 2) (Number 6, Freq 3) (Number 8, Freq 2) (Number 9, Freq 1)
हल करने के चरण
आकार 10 का एक सरणी freq परिभाषित करें और सभी तत्वों को 0 से इनिशियलाइज़ करें
i := 0 से शुरू करें, जब i < s का आकार, i को 1 से बढ़ाते हुए करें:
यदि s[i] संख्यात्मक है, तो:
freq[s[i] - '0' का ASCII] को 1 से बढ़ाएं
i := 0 से शुरू करें, जब i < 10, i को 1 से बढ़ाते हुए करें:
यदि freq[i] > 0, तो:
प्रदर्शित करें (Number i, Freq freq[i])
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#include <stdio.h> #include <string.h> void solve(char *s){ int freq[10] = {0}; for(int i = 0; i < strlen(s); i++){ if(s[i] >= '0' && s[i] <= '9'){ freq[s[i] - '0']++ ; } } for(int i = 0; i<10; i++){ if(freq[i] > 0) printf("(Number %d, Freq %d)\n", i, freq[i]); } } int main(){ char *s = "we85abc586wow236h69"; solve(s); } इनपुट
"we85abc586wow236h69"
आउटपुट
(Number 2, Freq 1) (Number 3, Freq 1) (Number 5, Freq 2) (Number 6, Freq 3) (Number 8, Freq 2) (Number 9, Freq 1)