Problem: HJ9 提取不重复的整数
题目描述
描述
输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。保证输入的整数最后一位不是0。
数据范围: 1 ≤ n ≤ 10^8
输入描述:
输入一个int型整数。
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
示例1
输入:9876673 A
输出:37689
解题思路
使用哈希表存储数据,遍历输入数据,判断每一次遍历的数字是否在哈希表中存在,存在则跳过,不存在则存储进去。
算法流程
- 将输入的整数转换为字符串,然后将字符串逆序
- 定义一个哈希集合,用于记录已经出现过的数字 3.遍历逆序后的字符串,将每个字符转换为数字
- 如果该数字没有在哈希集合中出现过,则将其加入结果数字中。
- 如果该数字已经在哈希集合中出现过,则跳过。
- 返回结果数字
代码
function getUniqueDigits(num) {
let numStr = num.toString().split("").reverse().join("");
let result = 0;
let visited = new Set();
for(let i = 0; i < numStr.length; i++){
let digit = Number(numStr[i]);
if(!visited.has(digit)){
result = result * 10 + digit;
visited.add(digit);
}
}
return result;
}
复杂度
- 时间复杂度:
添加时间复杂度, 示例:
- 时间复杂度为。需要遍历输入数字的每一位
- 空间复杂度:
添加空间复杂度, 示例:
- 额外的哈希集合来存储已经出现过的数字,,x为所有不重复数字的和。