「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」。
前言
最近参加了2022年三月份的蓝桥杯比赛,所以计划学习算法和数据结构相关知识,但是平时都是学习不持续,所以希望借此机会来学习此知识点。因为我是在校大三学生,所以后续的算法相关代码都是使用Java语言来进行完成。本文更新的是蓝桥杯算法题之--单词分析。
题目
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
示例
题解
import java.util.Scanner;
public class number1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
int[] a = new int[26];
for (int i = 0; i < str.length(); i++) {/*str.charAt(i)-'a'得到a[i]中存储的数字字符对应a数组中哪一个下标,也是将字符转成数字,再记数加一。*/
a[str.charAt(i) - 'a']++;
}
char ch='a';
int max=0;
for(int i=0;i<26;i++) {
if(a[i]>max) {//比较出现次数最多的字母,计算出它的次数
max=a[i];
ch=(char)('a'+i);
}//因为是从前往后 所以相等时 无需考虑
}
System.out.println(ch);
System.out.println(max);
}
}
复制代码
分析
使用数组来进行下标计数法,当遇到相同的字母的时候就+1,以此类推,并且在此基础上使用for循环来完成,并且嵌套if语句,运用比较法,来不断替换出现最多次数的字母个数。