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

使用HashMap检测列表重复项并为重复元素追加计数后缀的实现问题

问题原因

你当前代码存在两处错误导致无法正确统计重复次数:

  • HashMap存储的是元素首次出现的下标,没有同步更新重复出现的次数,无法记录元素累计出现的次数
  • 拼接后缀时固定写死了"1",没有动态调用统计到的重复次数
修正后的实现代码
public static List<String> duplicates(List<String> given) {
    List<String> result = new ArrayList<>();
    HashMap<String, Integer> countMap = new HashMap<>();

    for (String current : given) {
        if (countMap.containsKey(current)) {
            // 取出当前累计的重复次数作为后缀
            int count = countMap.get(current);
            result.add(current + count);
            // 次数自增,为下一次重复做准备
            countMap.put(current, count + 1);
        } else {
            // 首次出现时存入初始次数1,下次出现时后缀即为1
            countMap.put(current, 1);
            result.add(current);
        }
    }

    return result;
}
效果验证

用你给出的示例测试:
输入:["mixer", "toaster", "mixer", "mixer", "bowl"]
执行逻辑:

  1. 首次遇到mixer:存入countMap值为1,输出mixer
  2. 首次遇到toaster:存入countMap值为1,输出toaster
  3. 第二次遇到mixer:取到存储值1,输出mixer1,更新countMap值为2
  4. 第三次遇到mixer:取到存储值2,输出mixer2,更新countMap值为3
  5. 首次遇到bowl:存入countMap值为1,输出bowl
    最终输出和预期完全一致:["mixer", "toaster", "mixer1", "mixer2", "bowl"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:24:03