题目链接在此。
思路
用一个字典数组mp[6]记录PATest这个单词中的六个字符,再用一个数组hashTable[6]记录每个字符出现的次数,并用count变量记录总共的个数。
之后遍历hashTable数组,如果hashTable[i]!=0,则输出mp[i],并且sum–,知道sum==0则不再输出。
AC代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char str[10010];
char mp[] = {'P','A','T','e','s','t'};//PATest
int main(){
gets(str);
int hashTable[6] = {0};
int len = strlen(str);
int count = 0;
for(int i = 0; i < len; i++){
char c = str[i];
if(c == 'P'){
hashTable[0]++;
count++;
}else if(c == 'A'){
hashTable[1]++;
count++;
}else if(c == 'T'){
hashTable[2]++;
count++;
}else if(c == 'e'){
hashTable[3]++;
count++;
}else if(c == 's'){
hashTable[4]++;
count++;
}else if(c == 't'){
hashTable[5]++;
count++;
}
}
for(int i = 0; count > 0; i++){
if(i == 6){
i = 0;
}
if(hashTable[i] > 0){
printf("%c",mp[i]);
count--;
hashTable[i]--;
}
}
return 0;
}