题解 | #提取不重复的整数#

提取不重复的整数

https://www.nowcoder.com/practice/253986e66d114d378ae8de2e6c4577c1

#include<iostream>
#include<array>
using namespace std;
//倒序提取不重复的整数
int Non_Rep_Num(int num) {
    string str = to_string(num); //将整数转换为字符串
    int len = str.size(); //获取字符串的长度,即输入整数的位数
    int New_num = 0; //初始化一个不含重复数字的新的整数
    array<int, 10>a = {0}; //采用数组下标对应方法,记录整数中数字 0 到 9 出现与否的情况
    // 记录整数中出现的数字(通过逆序读取整数转换得到的字符串)
    for (int i = len - 1; i >= 0; i--) {
        a[str[i] - '0'] = 1;//减去字符‘0’的意义在于得到数字,常用于字符转变成数字
    }
    //按字符串中数字的相对位置顺序,逆序输出不含重复发数字的整数
    for (int i = len - 1; i >= 0; i--) {
        if (a[str[i] - '0'] == 1) {
            //将数字字符串转换为整数
            New_num *= 10;
            New_num += str[i] - '0';
            //避免重复输出同一数字
            a[str[i] - '0'] = 0;
        }
    }
    return New_num; //返回不含重复数字的新的整数
}
int main() {
    int num;
    while (cin >> num) {
        cout << Non_Rep_Num(num) << endl;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务