华为机试 - 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;
}
全部评论
老哥太强了
点赞 回复
分享
发布于 2020-04-20 12:03
牛逼
点赞 回复
分享
发布于 2021-03-25 15:16
滴滴
校招火热招聘中
官网直投
if (count[num_in % 10] == 0) { // ==0说明没有出现过该数字 count[num_in % 10] ++;//出现一次加1 这块判断是什么意思呀,没看懂
点赞 回复
分享
发布于 2021-08-31 11:36

相关推荐

22 13 评论
分享
牛客网
牛客企业服务