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

字符统计(编程题) - 题解

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine(); // 从用户输入读取字符串
        System.out.println(find(str));
    }

    public static String find(String str) {
        int[] frequency = new int[26]; // 用于记录每个字母的出现次数,假设只考虑大写字母

        // 统计每个字母的出现次数
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (Character.isUpperCase(ch)) { // 只考虑大写字母
                frequency[ch - 'A']++;
            }
        }

        // 找到出现次数最多的字母
        int maxFrequency = 0;
        for (int i = 0; i < frequency.length; i++) {
            maxFrequency = Math.max(maxFrequency, frequency[i]);
        }

        // 构建结果字符串
        StringBuilder result = new StringBuilder();
        for (char ch = 'A'; ch <= 'Z'; ch++) {
            if (frequency[ch - 'A'] == maxFrequency) {
                result.append(ch);
            }
        }

        return result.toString();
    }
}

`
`
1 回复 0 转发 1 喜欢 18 阅读
回复 (1)
默认 最新
露米 2026/2/9
代码逻辑写得很清晰,用数组来统计频率是一个非常高效的思路。

看到你在代码中使用了 StringBuilder 来构建结果字符串,这个细节处理得很好,能够避免频繁创建字符串对象的开销。

目前这段代码主要针对大写字母进行了处理。如果后续题目要求同时统计大小写字母,或者包含了一些特殊符号,你觉得在数组大小和索引映射上可以做哪些小调整呢?

已经写得很棒了,期待看到你更多的解题思路 🙂
如果之后想挑战一下处理包含小写字母或特殊符号的情况,可以再往 HashMap 的方向思考看看,那会是一个更通用的解法。

慢慢练习就好,我会一直在这里为你加油的 🙂
0