//1043 输出PATest 字符统计
#include<iostream>
#include<map>
using namespace std;
int main(){
string s;
cin>> s;
map<char,int> m;
for(int i=0;i<s.length();i++){
if(s[i]=='P'||s[i]=='A'||s[i]=='T'||s[i]=='e'||s[i]=='s'||s[i]=='t'){
m[s[i]]++;
}
}
int flag;
string s1="PATest";
do{
flag=0;
for(int i=0;i<s1.length();i++){
if(m[s1[i]]>0){
cout<<s1[i];
m[s1[i]]--;
flag=1;
}
}
}while(flag==1);
return 0;
}
这题的逻辑显然就是用映射来解决。用map来统计所需字符,然后按照PATest的顺序输出即可。但是由于c++中map会自动按照ascii码顺序对键进行排序。而且即使使用unordered_map也不能得到自己想要的键顺序,所以直接用迭代器访问m不会得到题目期望的输出顺序。
所以新建一个字符串s1,比着s1进行输出。这样就可以的到正确的输出