2053 k-th distinct string
题目:
给你一个包含可能重复string的vector回传只出现过一次且在这些只出现一次的string中
在原vector第k次出现的string,如果只出现一次的string不到k个则回传空字串
思路:先用unordered map纪录字串第几个出现并有重复出现则记成-1,之后用map塞入
纪录不为-1的字串,之后依序找到第k个字串并回传,本来想说用nth element应该可以
压在O(n)但想了下n<=1000,nlgn和n差不了多少就算了。
string kthDistinct(vector<string>& arr, int k) {
unordered_map<string,int> ff;
int cnt=1;
for(int i=0;i<arr.size();++i){
if(!ff.count(arr[i])){
ff[arr[i]]=i;
}
else{
ff[arr[i]]=-1;
}
}
map<int,string> dd;
for(auto ww:ff){
if(ww.second!=-1){
dd[ww.second]=ww.first;
}
}
for(auto e: dd){
if(cnt==k){
return e.second;
}
else{
cnt++;
}
}
return "";
}