输入一个仅包含小写字母构成的字符串,统计其中出现次数最多的字符及其次数。

输入一个仅包含小写字母构成的字符串,统计其中出现次数最多的字符及其次数。
要求如下字符串长度小于等于100,若出现次数最多的字符有多个,仅输出字母表中序号最小值字符及其次数。

package net.lesscoding;

import java.util.*;

/**
 * @author eleven
 * @date 2021/12/16 10:17
 * @apiNote
 */
public class testElevenTest {
    public static void main(String[] args) {
        String str = "aagdaghjkdagccccbbbb";
        Set<String> checkedSet = new HashSet<>();
        Map<Integer, Character> map = new HashMap<>();
        int max = 0;
        for (char c : str.toCharArray()) {
            String checkChar = "" + c;
            if(!checkedSet.contains(checkChar)){
                checkedSet.add(checkChar);
                int sum = str.length() - str.replace(checkChar,"").length();
                max = max < sum ? sum : max;
                Character character = map.get(sum);
                if(character == null || c < character){
                    map.put(sum,c);
                }
            }
        }
        System.out.println(map);
        System.out.println(map.get(max));
    }
}

定义一个int nmb[26]={0},读取字符串后,逐个字符遍历,然后相应的 num[ str[i]-'a']++,最好排序输出就可以了。
参考如下:

#include <stdio.h>
int main()
{
    char str[100];
    int nmb[26]={0}; //记录数量
    int i=0,maxindex=0;
    gets(str); //读取一行字符
    while(str[i] != '\0')
    {
        if(str[i]>='a' && str[i]<='z')
            nmb[str[i]-'a']++;
        i++;
    }
    //找出最大的
    for (i=0;i<26;i++)
    {
        if(nmb[i] > nmb[maxindex])
            maxindex = i;
    }
    //输出
    printf("%c %d",(char)('a'+maxindex),nmb[maxindex]);
    return 0;
}