📅  最后修改于: 2023-12-03 15:13:46.828000             🧑  作者: Mango
给定一个字符串,求其中出现次数最多的字符及其出现次数,如果有多个字符出现次数相同,则输出ASCII码最小的那一个字符及其出现次数。
首先要遍历字符数组中的每个字符,统计出每个字符的出现次数。可以定义一个256大小的数组,将每个字符对应的ASCII码作为下标,记录每个字符出现的次数。
char str[] = "abccdeeeee";
int count[256] = {0};
for(int i = 0; str[i] != '\0'; i++){
count[str[i]]++;
}
然后再遍历一次字符数组,找到出现次数最多的字符以及出现次数。可以设置两个变量maxCount
和maxChar
记录当前出现次数最多的字符和出现次数。
int maxCount = 0;
char maxChar;
for(int i = 0; i < 256; i++){
if(count[i] > maxCount){
maxCount = count[i];
maxChar = (char)i;
}
}
需要注意的是,当有多个字符出现次数相同时,应该选择ASCII码最小的那一个字符作为最终结果。
#include <stdio.h>
int main(){
char str[] = "abccdeeeee";
int count[256] = {0};
for(int i = 0; str[i] != '\0'; i++){
count[str[i]]++;
}
int maxCount = 0;
char maxChar;
for(int i = 0; i < 256; i++){
if(count[i] > maxCount){
maxCount = count[i];
maxChar = (char)i;
}
}
printf("出现次数最多的字符是%c,出现次数为%d", maxChar, maxCount);
return 0;
}
该代码输出的结果为:
出现次数最多的字符是e,出现次数为5