题目描述
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
保证输入的整数最后一位不是0。
输入描述
输入一个int型整数。
输出描述
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
示例
输入:
text
9876673
输出:
text
37689
说明:从右往左读是3 7 6 6 7 8 9,去掉重复的后是3 7 6 8 9,即37689。
C 语言解决方案
思路
用一个大小为
10的数组visited[10]记录数字0~9是否已经出现过。从右往左逐位取出数字(
n % 10)。若该位数字未出现过,则标记并加入结果;否则跳过。
结果通过
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; }