水題 提取不重複的整數 (queue的練習)
- 2019 年 11 月 8 日
- 筆記
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/weixin_42449444/article/details/85316270
題目描述:
輸入一個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; }