字符可以作为数组下标
#include<bits/stdc++.h>
using namespace std;
int hashtable[128];
char a[6]= {'P','A','T','e','s','t'};
int main() {
string str;
cin>>str;
int n=str.size(),sum=0;
for(int i=0; i<n; i++) {
char c=str[i];
for(int j=0; j<6; j++) {
if(c==a[j]) {
hashtable[c]++;
sum++;
break;
}
}
}
while(sum>0) {
for(int i=0; i<6; i++) {
char c=a[i];
if(hashtable[c]>0) {
printf("%c",c);
hashtable[c]--;
sum--;
}
}
}
return 0;
}
方法二
#include<bits/stdc++.h>
using namespace std;
int hashtable[6];
char a[6]= {'P','A','T','e','s','t'};
int main() { string str; cin>>str; int n=str.size(),sum=0; for(int i=0; i<n; i++) { char c=str[i]; for(int j=0; j<6; j++) { if(c==a[j]) { hashtable[j]++; sum++; break; } } } while(sum>0) { for(int i=0; i<6; i++) { if(hashtable[i]>0) { printf("%c",a[i]); hashtable[i]--; sum--; } } } return 0;
}