/* 本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。 欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。 我是一名有诗人气质的网络安全工程师 期待与你的思想交流碰撞出智慧的花火 水木清华 2020-03-13 提取不重复的整数 */ #include<iostream> using namespace std; //提取不重复的整数的函数接口 int Non_Rep_Num(int num) { string str = to_string(num); //将整数转换为字符串 int len = str.size(); //获取字符串的长度,即输入整数的位数 int New_num = 0; //初始化一个不含重复数字的新的整数 int a[10] = {0}; //采用数组下标对应方法,记录整数中数字 0 到 9 出现与否的情况 // 记录整数中出现的数字(通过逆序读取整数转换得到的字符串) for(int i = len - 1; i >= 0; i--) { a[str[i] - '0'] = 1; } //按字符串中数字的相对位置顺序,逆序输出不含重复发数字的整数 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; } return 0; }