【入门】算法nodeJs:提取不重复的整数

93 阅读2分钟

对于给定的正整数 n ,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

输入描述:

在一行上输入一个正整数 n(1≦n≦108) 代表给定的整数。
保证 n 的最后一位不为 0 。

输出描述:

在一行上输出一个整数,代表处理后的数字。

var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    while ((line = await readline())) {
        const b = [...new Set(line.split("").reverse().join(""))];
        console.log(b.join(""));
    }
})();
  1. line.split('') :将字符串 line 按字符分割成数组。例如,如果 line = "abc", 那么 line.split('') 会得到 ['a', 'b', 'c']
  2. reverse() :将数组的元素顺序颠倒。例如,['a', 'b', 'c']reverse() 处理后会变成 ['c', 'b', 'a']
  3. join('') :将数组重新合并成一个字符串,数组中的每个字符用空字符串连接。例如,['c', 'b', 'a']join('') 处理后变成 "cba"
  4. new Set() :通过 Set 来去除字符串中重复的字符。Set 是一种集合类型,它会自动去除重复的元素。因此,如果字符串 "cbaabc"Set 处理后,会变成一个去重的集合,Set 中的字符会是 {'c', 'b', 'a'},顺序是基于它们第一次出现的顺序。
  5. [...new Set(...)] :通过扩展运算符 ...Set 转换回数组。此时,Set 中的字符会按它们第一次出现的顺序排列。

总结一下,代码的作用是:

  • 对字符串 line 进行反转。
  • 去掉反转后的字符串中的重复字符。
  • 将结果保存在数组 b 中。

例如:

  • 如果 line = "abcabc", 代码的执行过程是:

    1. split('') 结果是 ['a', 'b', 'c', 'a', 'b', 'c']
    2. reverse() 结果是 ['c', 'b', 'a', 'c', 'b', 'a']
    3. join('') 结果是 "cbaCBA"
    4. Set 去重后的结果是 {'c', 'b', 'a'}
    5. 扩展运算符生成数组,结果是 ['c', 'b', 'a']