解题思路:在这个题目中,我们了解到需要输出最多的字符,所以我建立一个数组,初始化为0,当有该字符的时候+1。我们在进行一个遍历输出
注意事项:
“A”=65
在建立统计数组时候,可以将arr[0],从arr[1]开始,这样可以将下标对应
注意数组越界问题
参考代码:
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { // 创建一个扫描器对象,用于接收用户输入的字符串 Scanner sc = new Scanner(System.in); // 读取用户输入的字符串 String s = sc.next(); // 创建一个长度为26的整型数组,用于存储每个字母出现的次数 int[] arr = new int[26]; // 将数组的第一个元素初始化为0 arr[0] = 0; // 遍历输入的字符串 for (int i = 0; i < s.length(); i++) { // 计算当前字符与'A'的差值,得到一个标志位 int flag = 0; flag = (s.charAt(i) - 'A'); // 根据标志位更新对应字母出现次数的计数 arr[flag] += 1; } // 创建一个新的整型数组,用于存储原数组的副本 int[] newArr = new int[arr.length]; // 将原数组的元素复制到新数组中 for (int i = 0; i < newArr.length; i++) { newArr[i] = arr[i]; } // 对新数组进行排序 Arrays.sort(newArr); // 初始化一个变量num,用于存储出现次数最多的字母的索引 int num = -1; // 遍历原数组,找到出现次数最多的字母的索引 int j = 0; for (j = 0; j < arr.length; j++) { if (arr[j] == newArr[arr.length - 1]) { num = j; // 输出出现次数最多的字母 System.out.print((char) (65 + num)); } } // 换行 System.out.println(); } }
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复