如何实现findAllDigits函数,返回数组中首次集齐0-9数字的四位数
问题解答
你确实需要将每个四位数拆分为单个数字做统计,这是实现需求的核心步骤。
实现思路
- 第一步:初始化一个
Set结构存储已收集到的数字,利用Set自动去重的特性,重复数字无需重复存储,方便后续判断是否收集完整。 - 第二步:依次遍历数组中的每一个四位数:
- 将当前数字转为字符串后拆分为单个字符,再逐一转回数字格式,得到当前数字的所有位值
- 将所有位值存入准备好的Set中
- 存入后判断Set的大小是否为10:如果是,说明已经收集齐0-9全部数字,直接返回当前遍历到的四位数即可
- 第三步:如果遍历完全部数组元素后,Set的大小仍小于10,返回
"Missing digits!"
完整实现代码
function findAllDigits(arr) { // 存储已收集的数字,自动去重 const collected = new Set(); for (const num of arr) { // 拆分当前四位数为单个数字 const digits = num.toString().split('').map(Number); // 把每个数字加入集合 digits.forEach(d => collected.add(d)); // 判断是否集齐0-9 if (collected.size === 10) { return num; } } // 遍历完仍未集齐 return "Missing digits!"; }
测试验证
- 调用
findAllDigits([5175, 4538, 2926, 5057, 6401, 4376, 2280, 6137, 8798, 9083]),返回结果为5057,符合预期。 - 调用
findAllDigits([4883, 3876, 7769, 9846, 9546, 9634, 9696, 2832, 6822, 6868]),返回结果为"Missing digits!",符合预期。
内容的提问来源于stack exchange,提问作者che2programmer
相关产品推荐
相关产品推荐

