☰
华为机考题:提取不重复的整数
2026/10/3 12:58:10 网站建设 项目流程

题目描述

输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

保证输入的整数最后一位不是0。

输入描述

输入一个int型整数。

输出描述

按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

示例

输入:

text

9876673

输出:

text

37689

说明:从右往左读是3 7 6 6 7 8 9,去掉重复的后是3 7 6 8 9,即37689。


C 语言解决方案

思路

  1. 用一个大小为10的数组visited[10]记录数字0~9是否已经出现过。

  2. 从右往左逐位取出数字(n % 10)。

  3. 若该位数字未出现过,则标记并加入结果;否则跳过。

  4. 结果通过result = result * 10 + digit累加得到,天然就是"从右往左读"的顺序。

代码实现

c

#include <stdio.h> #include <string.h> int main(void) { int n; scanf("%d", &n); int visited[10]; memset(visited, 0, sizeof(visited)); int result = 0; while (n > 0) { int digit = n % 10; // 取出最低位(即从右往左读) n /= 10; if (!visited[digit]) { visited[digit] = 1; // 标记已出现 result = result * 10 + digit; // 拼接到结果 } } printf("%d\n", result); return 0; }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询