JavaScript 提取不重复的整数「哈希表」🔢

提取不重复的整数

https://www.nowcoder.com/practice/253986e66d114d378ae8de2e6c4577c1

算法思路

题目要求提取一个整数,从右到左读取,并去除重复的数字。为了实现这个功能,可以使用哈希表(Set)来记录已出现过的数字,从而避免重复。我们可以从右到左遍历整数的每一位数字,将遇到的未出现过的数字添加到结果中,最后将结果合成新的整数输出。

Code

const rl = require("readline").createInterface({ input: process.stdin });  // 输入接口
var iter = rl[Symbol.asyncIterator]();  // 异步迭代器
const readline = async () => (await iter.next()).value;  // 读取输入

void async function () {
    const num = await readline();  // 获取输入的整数
    let str = num.toString();  // 将整数转为字符串,便于逐位操作
    let result = [];  // 用于存放结果的数组
    let seen = new Set();  // 哈希表,记录已出现的数字
    
    // 从右向左遍历字符串中的每一位数字
    for (let i = str.length - 1; i >= 0; i--) {
        let digit = str[i];  // 获取当前位的数字
        if (!seen.has(digit)) {  // 如果该数字未出现过
            seen.add(digit);  // 将数字加入哈希表
            result.push(digit);  // 将数字加入结果数组
        }
    }
    
    // 结果数组
    console.log(result.join(''));
}()

复杂度分析

  • 时间复杂度:O(n),其中n是输入整数的位数。我们遍历了整数的每一位,因此时间复杂度为O(n)。
  • 空间复杂度:O(n),用于存储哈希表和结果数组。最坏情况下,输入的每一位数字都不同,需要O(n)的空间。
全部评论

相关推荐

07-24 13:43
门头沟学院 Java
longerluck...:我猜说的是“你真**是个天才”
投递美团等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-24 12:26
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务