蓝桥杯子--单词分析

204 阅读1分钟

「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」。

前言

最近参加了2022年三月份的蓝桥杯比赛,所以计划学习算法和数据结构相关知识,但是平时都是学习不持续,所以希望借此机会来学习此知识点。因为我是在校大三学生,所以后续的算法相关代码都是使用Java语言来进行完成。本文更新的是蓝桥杯算法题之--单词分析。

题目

小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。

示例

1.png.png

image.png

题解

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语句,运用比较法,来不断替换出现最多次数的字母个数。