问题描述: 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
知识点: 数组
题目来源: 内部整理
练习阶段: 初级
运行时间限制: 10Sec
内存限制: 128MByte
输入:
输入一个int型整数
输出:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
如果返的整数以0开头,去掉0;
如 intput:1010 output:1
样例输入: 9876673
样例输出: 37689
问题分析:记得要从右向左读书,首先第一个数放入待输出的数组后,重新从输入数组中,选择一个,与待输出数组每个数比较,全都不一样才放入待输出数组准备输出,另外,要注意,输出的数以0开头时,要去掉0之后再输出。
代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
long num;
int flag=0,k=1,i=0,j=0;
cin>>num;
char str[100];
char out[100]={'\0'};
char *pout;
sprintf(str,"%d",num);
int len=strlen(str);
if(1==len)
{
cout<<str;
return 0;
}
out[0]=str[len-1];//把第一个数先放进去
for(i=len-2;i>=0;i--)
{
for(j=0;j<strlen(out);j++)
{
if(str[i]==out[j])
{
flag=1;
break;
}
}
if(0==flag)
{
out[k]=str[i];
k++;
}
flag=0;
}
for(i=0;i<strlen(out);i++)
{
if('0'!=out[i])
{
pout=out+i;
break;
}
}
cout<<pout<<endl;
return 0;
}