查詢字串中每個數字出現頻率的C程式
假設我們有一個字串s,s包含字母和數字。我們需要找到每個數字的出現頻率並顯示它們。為此,我們可以建立一個大小為10的陣列來儲存每個數字(0到9)的頻率,陣列元素初始值都為0。當遇到一個數字時,只需增加相應索引的值,最後列印所有結果。
因此,如果輸入類似s = "we85abc586wow236h69",則輸出將是:(數字2,頻率1) (數字3,頻率1) (數字5,頻率2) (數字6,頻率3) (數字8,頻率2) (數字9,頻率1)
為了解決這個問題,我們將遵循以下步驟:
定義一個大小為10的陣列freq,並將所有元素初始化為0。
迴圈遍歷字串s,從i=0到i小於s的長度:
如果s[i]是數字,則:
將freq[s[i] - '0'的ASCII碼]加1。
迴圈遍歷陣列freq,從i=0到i小於10:
如果freq[i] > 0,則:
顯示 (數字i,頻率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)
", 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)
廣告