You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何统计单单词字符串内连续字符的出现次数?

解决连续字符统计问题的思路和代码修改方案

嘿,我来帮你搞定这个连续字符统计的问题!你的原代码之所以会把所有A算成一个整体,是因为它的逻辑是按字母表逐个统计整个字符串里该字符的总数量,而不是跟踪字符串里的连续字符段。要实现你要的连续统计效果,得换个思路——直接遍历字符串本身,跟踪当前连续的字符和它的计数。

核心逻辑步骤

  • 先判断字符串是否为空,避免空指针异常;
  • 初始化当前字符为字符串的第一个字符,计数器设为1;
  • 从第二个字符开始遍历:
    • 如果当前字符和前一个字符相同,计数器加1;
    • 如果不同,就输出之前的计数和字符,然后更新当前字符为当前遍历到的字符,计数器重置为1;
  • 遍历结束后,别忘了输出最后一组连续的字符和计数(因为循环里只有遇到不同字符才会输出,最后一组没触发输出)。

修改后的完整代码

public class ContinuousCharCount {
    public static void main(String[] args) {
        String alpha = "AAAABBCCCDAA";
        
        // 处理空字符串的边界情况
        if (alpha.isEmpty()) {
            return;
        }
        
        // 初始化当前连续字符和计数
        char currentChar = alpha.charAt(0);
        int count = 1;
        
        // 从第二个字符开始遍历字符串
        for (int i = 1; i < alpha.length(); i++) {
            char nextChar = alpha.charAt(i);
            if (nextChar == currentChar) {
                // 和当前字符相同,计数加1
                count++;
            } else {
                // 遇到不同字符,输出前一段的统计结果
                System.out.print(count + "" + currentChar);
                // 更新当前字符和计数
                currentChar = nextChar;
                count = 1;
            }
        }
        
        // 输出最后一段连续字符的统计结果
        System.out.print(count + "" + currentChar);
    }
}

代码运行效果

这段代码运行后会输出你预期的结果:4A2B3C1D2A。它会逐段跟踪连续的字符,每遇到新的字符就结算前一段的统计,完美区分开头的4个A和末尾的2个A。

原代码问题复盘

你的原代码是遍历A-Z每个字母,然后在整个字符串里数该字母的总出现次数,相当于把所有相同字母的出现次数合并了,不管它们是不是连续的,所以才会得到6A2B3C1D这样的结果——它把开头和末尾的A加起来了,而不是分开统计连续段。

内容的提问来源于stack exchange,提问作者RamaKanta Bisipa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:22:14