1.贴题目在这里插入图片描述
2.审题与思考
审题:找出一串小写字符串中 出现频率最高的字母,如果有相同次数的,则按字母排序顺序输出靠前那个!
拆解:首先获取每个字母出现的次数,然后比较谁出现次数最多,如果出现相同次数可以直接比较字母的ascii码。
3.代码实现:(注释已经够清晰了,自己跟着思考即可)

#include "stdio.h"
#include "string.h"
int main(){
//定义简单的哈希表并确定表长为128(因为ASCII码只占一个字节8位)并赋初值为0
    int a[128]={0};
    char s[1000];
    scanf("%s",s);
    int len=strlen(s);
//max用于更新最大次数,t用于更新对应的字符
    int max = 0;
    char t = 0;
//完成哈希表的建立(即遍历一遍字符串得到值键对)
    for(int i=0;i<len;i++){
        a[s[i]]++;
        if (max<a[s[i]])
{//完成最大次数的扫描,以及该情况下对应键的记录
            max = a[s[i]];
            t = s[i];
}//若出现相同次数利用ASCII码来进行判断,小的记录下来
        else if (max==a[s[i]]){
            if (t>s[i])
    {
                t = s[i];
    }
    
}
}//最后进行字符以及对应次数的输出即可。
    printf("%c\n%d",t,max);
}
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐