您的位置:首页 > 编程语言 > C语言/C++

牛客网_华为机试_009_提取不重复的整数

2017-07-06 16:32 267 查看


题目描述

输入一个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
)
cout << n;
count
= 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
)
{
flag
= 1;
//每次result*10,加上n
result = result * 10 + n;
}
num /= 10;
}
cout << result << endl;

}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 华为 算法