题目描述
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
示例1
输入
9876673
输出
37689
本题考查知识点:数组、去重
难度:初级
long GetConvertInt( long iInput )
{
int a[20]={0};
long Output = 0;
int len=0;
while( iInput > 0 )//用数组保存整数,并倒序
{
a[len++] = iInput%10;
iInput = iInput/10;
}
for(int i=0;i<len;i++)//去重
{
for(int j=i+1;j<len;j++)
{
if(a[i] == a[j])
{
for(int k =j;k<len;k++)//error:k++写成i++
{
a[k]=a[k+1];
}
len--;
j--;
}
}
}
for(int i=0;i<len;i++)
{
Output = Output*10+a[i];
}
return Output;
}
get的知识点:
1.pow函数的用法:
double pow(double x, double y) 返回 x 的 y 次幂,注意:x,y的类型为double。
参数:
- x -- 代表基数的浮点值。
- y -- 代表指数的浮点值。
2.将数组中保存的整数输出为一个完整的数,通过i来控制正序、逆序
Output = Output*10 + a[i];
3.优秀代码借鉴:
#include<iostream>
using namespace std;
int main()
{
int n;
int a[10]={0};
int num=0;
cin>>n ;
while(n)
{
if(a[n%10]==0)
{
a[n%10]++;//桶排序去重:这一步是更新,遇到下次相同的数会跳过
num=num*10+n%10;//计算倒序数值、正序通过for循环i解决
}
n/=10;
}
cout<<num<<endl;
return 0;
}