难点:
1.首先题目明确输入的是一个整数,那么我们要把这个整数去重,并且把这个数给反转,所以我们必须要提取每一个位置上的数。num%10能够提取整数的个位数,然后在num/10,之后在num%10这样就能够提取的输入的数的十位数啦。
2.注意题目的输出的是整数包含的所有的数字(重复的数字只输出一个就可以了),数字只有0—9。所以借助hash表的思想key–value的思想。创建一个大小为10的数组,来记录每个数字出现的情况。接下来只要判断出现过哪些数字,输出就行啦
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map <int, int> hash;//所有的值都会初始化为零
int num, out;
cin >> num;
while(num)
{
if(hash[num % 10 == 0])//num的最后一位等于零
{
hash[num % 10] ++;
out = out * 10 + num % 10;
}
num /= 10;
}
cout << out << endl;
return 0;
}