查找字符串中每个数字出现频率的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