题意
给定一个正整数n,和n个长度不超过10的单词,将这些单词依次插入到队列中,如果当前单词已经在队列里了,则把这个单词从原来的位置挪到队头;如果队列中没有这个单词,则直接把单词放到队头
解题思路
观察样例不难发现,输入时越靠后的单词,在输出时反而越靠前,再分析题意可以看出,不管在该单词插入前队列里有没有这个单词,都会将它放置到队列最前方,所以能够得到结论:单词在输入时越靠后,输出时就一定越靠前,那么只需将所给单词去重后倒序输出即可
AC代码
#include<bits/stdc++.h>
using namespace std;
int n;
string s[200005];
map<string,int> mp;
int main(){
cin>>n;
for(int i=1;i<=n;++i){
cin>>s[i];
}
for(int i=n;i>=1;--i){
mp[s[i]]++;
if(mp[s[i]]==1){
cout<<s[i]<<"\n";
}
}
return 0;
}