查詢字串中每個數字出現頻率的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)

更新於:2021年10月8日

5K+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告