华为机试 - 9 提取不重复的整数
提取不重复的整数
http://www.nowcoder.com/questionTerminal/253986e66d114d378ae8de2e6c4577c1
题目描述
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
示例1
输入
9876673
输出
37689
解题思路
1 用数组统计整数的出现次数
统计整数的出现次数可以采用一个初值为0的全局数组变量,数值对应index,count[index]代表出现的次数。
2 从右向左获取数字
通过 num_in % 10 获得个位数字,然后判断出现过没?
如果没出现过,则count[num_in % 10] ++;//出现一次加1,
num_out = num_out * 10 + num_in % 10;//低位数字变为高位
如果出现过,则整数num_in /= 10;//右移
3 c语言实现
#include <stdio.h> int main() { char count[10]={0};//count数组用于统计个数 int num_in,num_out =0; scanf("%d",&num_in); while (num_in) { if (count[num_in % 10] == 0) { // ==0说明没有出现过该数字 count[num_in % 10] ++;//出现一次加1 num_out = num_out * 10 + num_in % 10;//低位数字变为高位 } num_in /= 10; } printf("%d\n",num_out); return 0; }