文章目录
大家好,我是晓星航。今天为大家带来的是 蓝桥杯刷题 - 1 -单词分析 相关的讲解!😀
1.蓝桥杯官网
2.蓝桥杯题目进入界面 及 题目详情
3.题目解答过程及思路
我们先附上整段代码图
这里所包含的所有常量、变量和数组有:
s1 - 用来接受我们输入的字符串
a1[] - 用来存放我们26个字母对应出现的次数
a2 - 用来找到我们出现次数最多的字母所对应的数组下标
cnt - 用来找到每个输入字符在a1数组中对应的下标位置,并进行加加
i,j,k用来初始化for循环数组的循环次数
出现的函数有s1.charAt(j) 这里的函数意思为将s1字符串中的第j个位置的元素转化为相对应的ASCII(美国信息交换标准代码)的数值。
整体思路:初始化好每个元素后,我们通过三个for循环来解决题目。第一个for用来初始化数组的26个元素全部为0(虽然默认值已经为0,但是我们这样做会更加严谨)。第二个for用来解析s1输入的字符串中每一个字符在我们计数器数组a1[]中的位置,并在对应的字母位置进行加加,达到统计每一个字母出现次数的目的。第三个for是遍历我们的数组通过比较他们值的大小进行替换,直到遍历完数组找到出现次数最多的那个字母的下标,然后一直保留。最后就很简单了,我们直接打印出出现次数最多的字母(用(char)来强制转换 a2 + 97的意思为97对应a的ASCII码值加上他对应的字母位置,便为那个出现次数最多的字母的ASCII码,然后打印即可)和他的次数(直接打印我们第三个for循环中找到的a2在数字a1的值即为我们出现次数最多的字母的次数)即可。
4.运行结果图
5.解答代码展示
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... String s1 = scan.nextLine(); int a2 = 0; int[] a1 = new int[26];//a1用来记录每个字母出现次数,初始值默认全为0 for (int i = 0; i < a1.length; i++) { a1[i] = 0; } for (int j = 0; j < s1.length(); j++) { int cnt = s1.charAt(j) - 97; a1[cnt]++; } for (int k = 1; k < a1.length; k++) { if (a1[a2] < a1[k]) { a2 = k; } } System.out.println((char)(a2 + 97));//a2为出现次数最多那个字母所对应数组的下标 System.out.println(a1[a2]); scan.close(); } }
6.ASCII表图例
感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘