1. 程式人生 > >水題 提取不重複的整數 (queue的練習)

水題 提取不重複的整數 (queue的練習)

題目描述:

輸入一個int型整數,按照從右向左的閱讀順序,返回一個不含重複數字的新的整數。

輸入描述:

輸入一個int型整數。

輸出描述:

按照從右向左的閱讀順序,返回一個不含重複數字的新的整數。

輸入樣例:

9876673

輸出樣例:

37689

解題思路:

題目關鍵字“從右往左”,無腦利用queue先進先出的特點。用map記錄輸出過的數字,防止重複的數字被輸出。 

AC程式碼:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    queue<int> q;   //利用佇列先進先出的性質
    int n;
    cin >> n;
    while(n)
    {
        q.push(n%10);
        n /= 10;
    }
    map<int,int> m;    //用map記錄輸出過的整數,防止輸出重複的數字
    while(!q.empty())
    {
        if(m[q.front()] == 0)
        {
            cout << q.front();    //取出隊首元素
            m[q.front()] = 1;    //記錄隊首元素
        }
        q.pop();    //刪去隊首元素
    }
    return 0;
}