मान लीजिए कि हमारे पास एक स्ट्रिंग s है। s में अक्षर और अंक दोनों होते हैं। हमें प्रत्येक अंक की आवृत्तियों को खोजना होगा और उन्हें प्रदर्शित करना होगा। ऐसा करने के लिए हम प्रत्येक अंक (0 से 9) के लिए आकार 10 की एक सरणी बना सकते हैं, शुरू में सभी तत्व सरणी के अंदर 0 होते हैं, फिर जब हम एक अंक का सामना करते हैं तो बस उस सूचकांक के मूल्य को बढ़ाते हैं और अंत में उन सभी को प्रिंट करते हैं। पी>
इसलिए, यदि इनपुट s ="we85abc586wow236h69" जैसा है, तो आउटपुट होगा (नंबर 2, फ़्रीक 1) (नंबर 3, फ़्रीक 1) (नंबर 5, फ़्रीक 2) (नंबर 6, फ़्रीक 3) (नंबर 8, आवृत्ति 2) (नंबर 9, आवृत्ति 1)
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
आकार की एक सरणी आवृत्ति परिभाषित करें:10 और सभी तत्वों को 0 के साथ प्रारंभ करें
-
इनिशियलाइज़ करने के लिए:=0, जब मैं <साइज़ ऑफ़ s, अपडेट (i 1 से बढ़ाएँ), यह करें:
-
यदि s[i] सांख्यिक है, तो:
-
फ़्रीक [s[i] - '0' का ASCII] 1 तक बढ़ाएँ
-
-
-
प्रारंभ करने के लिए मैं:=0, जब मैं <10, अद्यतन (मैं 1 से बढ़ाएँ), यह करें:
-
अगर freq[i]> 0, तब:
-
डिस्प्ले (नंबर i , फ़्रीक फ़्रीक[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)