提取不重复的整数
程序员文章站
2022-07-13 13:24:53
...
题目描述
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
输入例子:
9876673
输出例子:
37689
解题思路
这个问题类似将一个整数翻转的问题,但是稍微复杂一点,因为对每一位数字,都需要先判断这个数字是否已经出现过,如果出现过就不再计入新的整数中。
为了方便判断一位数字是否出现过,定义一个长度为10的bool型数组isIn,用来表示0-9这10个数字是否已经出现过。如果isIn[i]=1,则表示数字i已经出现过。
代码
#include <iostream>
using namespace std;
int main()
{
int num1 = 0, num2 = 0;
cin >> num1;
bool isIn[10]; //用于表示0-9的数字是否已经出现过
for (int i = 0; i < 10; ++i)
isIn[i] = 0;
while (num1 > 0)
{
if (!isIn[num1 % 10]) //如果最低位没有出现过
{
num2 = num2 * 10 + num1 % 10;
isIn[num1 % 10] = 1;
}
num1 /= 10;
}
cout << num2 << endl;
return 0;
}
上一篇: 提取不重复的整数
下一篇: JAVA操作excel总结