题目描述
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
c++ code:
#include <iostream>
using namespace std;
#define MAX 10
int main(){
int s;
cin >> s;
int i = 0; //数组位数
int a[MAX];
while (s/10 != 0) //将所读取的数据 实现逆序 输出到数组里面
{
a[i] = s % 10;
s /= 10;
i++;
a[i] = s; //最后一个数组元素的赋值操作
}
int aLength = i + 1; //数组有元素的个数
//cout << i+1 << endl;
for (int j = 0; j < aLength; j++)
{
if (a[j] == -1)
{
continue; // -1 代表这是个重复数据,继续往下一个数据走就行
}
for (int k = j + 1; k < aLength; k++) //注意这里的 k 赋值是 j后面一位
{
if (a[k] == a[j]&&a[k] != -1)
{
a[k] = -1; //把重复的数据都用 -1 来表示
}
}
}
for (int q = 0; q <aLength;q++)
{
if (a[q]!=-1)
{
cout << a[q];
}
}
cout << endl;
return 0;
}
idea:
1、首先实现将读取的数据进行逆序,并且保存到一个int数组里面。
2、去重方法,把重复的数据全部用 -1 来代替
两层for循环。
第一层实现遍历元素的,只要是发现了=-1,就遍历下一个元素就ok。
第二层循环,实现将第一层遍历元素后面的重复的数据进行赋值=-1。
3、输出,只要加一个筛选条件,不等于 -1就进行输出。