算法设计与分析 · 2022年5月21日 0

算法设计之字符串输出问题

演示PPT下载

1.问题描述:

给定一个只包含大写字母的字符串S,请你输出其中出现次数最多的字母。如果有多个字母均出现了最多次,按字母表顺序依次输出所有这些字母。

2.伪代码

1.获取输入对象和获取输出的字符串arr
2.创建存键值对的HashMap3.for(遍历数组arrr)
{
if (是否已经有这个键)
	没有,创建,初始数量为1
else
	有,修改,将这个键的数量加1}
4.将所有数量存入数组中,升序排序
5.遍历每一个键
6.If(如果这个键出现的次数等于数组中的最大值)
	输出

3.代码展示

public class Main {

public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);  //获取输入对象

        String str = sc.next();  //获取输出的字符串

        Map<Character,Integer> map = new HashMap<>();  //创建存键值对的Map

        for (int i = 0; i < str.length(); i++) {  //遍历字符串的每一个

            if (!map.containsKey(str.charAt(i))){  //是否已经有这个键

                map.put(str.charAt(i),1);  //没有,创建,初始数量为1

            }else{

                map.put(str.charAt(i),map.get(str.charAt(i))+1);  //有,修改,将这个键的数量加1

            }

        }

        Object[] objects = map.values().toArray();  //将所有数量存入数组中

        Arrays.sort(objects);  //升序排序

        for (char key:map.keySet()){  //遍历每一个键

            if (map.get(key)==objects[objects.length-1]){         //如果这个键出现的次数等于数组中的最大值

                System.out.print(key);//输出

            }

        }

    }

}