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

为何代码生成含重复数字的三位数序列?请求代码问题分析

现有代码校验点失效原因分析

一、数字重复校验(if语句)失效的核心原因

  1. 数组未重置,旧值残留
    rngNumString数组仅在方法初始化时被赋值为{"0","0","0"},每次生成新三位数的for循环开始前,没有重置数组所有元素。当某次for循环中,某个index的赋值条件不满足时,该位置会保留上一次循环的旧值,而这个旧值可能和当前已生成的其他位置数字重复。
    例如:上一次循环生成了[1,1,2],下一次循环index=0赋值为1,index=1生成的digit是1,此时判断条件不满足,rngNumString[1]仍保留旧值1,后续index=2赋值新数字后变成[1,1,3],最终包含重复数字的数组被加入集合。

  2. 判断逻辑冗余且错误

    • 对于index=1的判断,!rngNumString[index].equals(digit)完全多余:该位置的旧值要么是初始的0,要么是上一次的残留值,和当前生成的digit(1-4)是否相等,不应该作为是否赋值的判断依据——我们只需要保证当前digit和前一个位置(index-1)的数字不重复即可。
    • 当生成的digit不符合条件时,代码直接跳过赋值,没有重新生成新的digit直到满足条件,导致该位置保留旧值,最终数组出现重复数字。

二、Set去重逻辑完全不符合预期

你想用Set过滤包含重复数字的三位数,但实际上Set的作用是去除完全相同的数组字符串,而不是过滤自身包含重复元素的数组。
例如[1,1,2]和[1,1,3]是两个不同的字符串,Set会将它们都保留,无法识别这两个数组本身存在内部数字重复的问题。这个校验点从逻辑上就无法实现你想要的过滤效果。

内容的提问来源于stack exchange,提问作者Coding Noob Unfiltered

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:22:21