欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

提取不重复的整数

程序员文章站 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;
}