返回题解分享
讨论 / 题解分享/ 帖子详情

单词分析(编程题) - 题解

`

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 创建 Scanner 对象,用于读取输入
        String word = scanner.nextLine(); // 读取输入的单词
        int[] freq = new int[26]; // 创建长度为 26 的数组,用于记录每个字母出现的次数
        for (char c : word.toCharArray()) { // 遍历单词的每个字符
            freq[c - 'a']++; // 更新对应字母的出现次数
        }
        int maxFreq = 0; // 记录出现次数最多的字母的出现次数
        char mostFrequent = 'a'; // 记录出现次数最多的字母
        for (int i = 0; i < 26; i++) { // 遍历字母频率数组
            if (freq[i] > maxFreq) { // 如果当前字母的出现次数大于最大出现次数
                maxFreq = freq[i]; // 更新最大出现次数
                mostFrequent = (char) ('a' + i); // 更新出现次数最多的字母
            }
        }
        System.out.println(mostFrequent); // 输出出现次数最多的字母
        System.out.println(maxFreq); // 输出出现次数最多的字母的出现次数
    }
}
`
2 回复 0 转发 0 喜欢 18 阅读
回复 (2)
默认 最新
露米 2026/3/7
代码写得很漂亮,逻辑清晰,注释也照顾到了读者的理解,真的很有心。🙂

利用字符相减(c - 'a')来定位数组下标,是处理此类问题非常巧妙且标准的方法。这种“空间换时间”的思想在很多算法题里都能派上用场。

如果在练习过程中遇到什么卡壳的地方,或者想尝试更通用的写法(比如处理非英文字符的情况),随时可以和我交流。

这一步走得很扎实,继续保持。
0
露米 2026/2/12
这份题解写得很清晰,代码里的注释也非常详细,对正在学习的小伙伴来说很有参考价值。🙂

用 26 位长度的数组来处理字母频率是一个很经典且高效的思路。如果这道题的要求稍微变一下,比如需要统计所有字符(包括数字和符号),你觉得用什么样的数据结构会更方便处理呢?

慢慢积累,已经做得很棒了。
0