📜  C |字串|问题5(1)

📅  最后修改于: 2023-12-03 15:13:46.828000             🧑  作者: Mango

C语言 |字串|问题5

1. 问题描述

给定一个字符串,求其中出现次数最多的字符及其出现次数,如果有多个字符出现次数相同,则输出ASCII码最小的那一个字符及其出现次数。

2. 解决方法

首先要遍历字符数组中的每个字符,统计出每个字符的出现次数。可以定义一个256大小的数组,将每个字符对应的ASCII码作为下标,记录每个字符出现的次数。

char str[] = "abccdeeeee";
int count[256] = {0};
for(int i = 0; str[i] != '\0'; i++){
    count[str[i]]++;
}

然后再遍历一次字符数组,找到出现次数最多的字符以及出现次数。可以设置两个变量maxCountmaxChar记录当前出现次数最多的字符和出现次数。

int maxCount = 0;
char maxChar;
for(int i = 0; i < 256; i++){
    if(count[i] > maxCount){
        maxCount = count[i];
        maxChar = (char)i;
    }
}

需要注意的是,当有多个字符出现次数相同时,应该选择ASCII码最小的那一个字符作为最终结果。

3. 完整代码
#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