查詢字串中每個數字出現頻率的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)
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP