算法 提取不重复整数

题目描述

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

输入描述:

输入一个int型整数

输出描述:

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

示例1

输入

复制
9876673

输出

复制
37689

  思路:将整数每一位,从个位开始保存到无序的map,再遍历map即可

     注意需要判断是否插入成功


#include <iostream>
#include <iterator>
#include <unordered_map>

using namespace std;

int main() {
  int n, index;
  int arry[10] = { 0 };
  unordered_map <int, int> vNumber;
  int length = 0;
  cin >> n;
  index = n;

while (index) {
  index /= 10;
  length++;
  }

  index = n;


for (int i = 0; i < length ; i++) {
  int number = index % 10;
  if(vNumber.find(number)==vNumber.end())
  vNumber.insert(make_pair(number, number));
  index /= 10;
}


  for (unordered_map<int, int>::iterator s = vNumber.begin(); s != vNumber.end(); s++) {
  cout << s->second;
  }
  cout << endl;
  return 0;
}

VS下输出跟OJ上输出结果不一样,OJ有问题,不能AC已经反馈

猜你喜欢

转载自www.cnblogs.com/liuruoqian/p/11645126.html