题目描述
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
示例1
输入
9876673
输出
37689
问题地址:https://www.nowcoder.com/practice/253986e66d114d378ae8de2e6c4577c1?tpId=37&tqId=21232&tPage=1&rp=&ru=/ta/huawei&qru=/ta/huawei/question-ranking
思路:维护一个数组或者vector长度为10,下标0~9代表取得数字,值代表是否已经输出过
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
string num;
while (cin >> num)
{
//用于记录0~9是否出现
vector<bool> count(10, false);
for (int i = num.size() - 1; i >= 0; i--)
{
int n = num[i] - '0'; //char转数字
if (!count[n])
cout << n;
count[n] = true;
}
cout << endl;
}
return 0;
}
思路二:严格按照题目要求输入int输出int
#include <iostream>
using namespace std;
int main()
{
int num = 0;
while (cin >> num)
{
//标记数组
int flag[10] = { 0 };
int result = 0;
while (num)
{
int n = num % 10;
if (!flag[n])
{
flag[n] = 1;
//每次result*10,加上n
result = result * 10 + n;
}
num /= 10;
}
cout << result << endl;
}
return 0;
}