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

Java中如何删除字符串里出现多次的字符?现有代码运行结果不符求排查

问题分析
  • 索引错位:调用deleteCharAt(i)后,StringBuilder内的字符会整体向前偏移1位,后续执行deleteCharAt(j)时定位已经偏移,无法删除预期的目标字符。
  • 字符漏检:删除i位置的字符后,外层循环的i会直接自增,会跳过刚移动到i位置的新字符,导致部分重复字符未被检测。
  • 统计逻辑缺陷:当前逻辑仅能处理刚好出现2次的字符,如果某字符出现3次及以上,删除前2次后剩余的字符会被误保留,不符合「出现次数超过一次就全部删除」的要求。
修复方案

采用先统计字符出现频率、再过滤保留目标字符的思路实现,逻辑简单且不会出现索引异常问题:

public class Main {
    public static void main(String[] args) {
        String s = "Javaprogram";
        // 统计每个字符的出现次数
        int[] charCount = new int[256];
        for (char c : s.toCharArray()) {
            charCount[c]++;
        }
        // 仅保留出现次数为1的字符
        StringBuilder result = new StringBuilder();
        for (char c : s.toCharArray()) {
            if (charCount[c] == 1) {
                result.append(c);
            }
        }
        System.out.println(result.toString());
    }
}

运行上述代码即可得到预期输出Jvpogm。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:54:03