自己写的:
#include<bits/stdc++.h>
using namespace std;
int hashtable[10010]={0};
int main(){
string s;
cin>>s;
//第一步:把s存进hashtable中
for(int i=0;i<s.length();i++){
hashtable[s[i]]++;
}
//第二步:建立一个数组char str=['p','A','T','e','s','t'],
//如果hashtable['P','A','T','e','s','t']有一个不为空,就继续输出它,
//按这个顺序访问,如果没有的话,看下一位
char str[6]={'P','A','T','e','s','t'};
while(hashtable['P']||hashtable['A']||hashtable['T']||hashtable['e']||hashtable['e']||hashtable['s']||hashtable['t']){
for(int i=0;i<6;i++){
if(hashtable[str[i]]){
cout<<str[i];
hashtable[str[i]]--;
}
}
}
return 0;
}
算法笔记的code:
#include<bits/stdc++.h>
using namespace std;
int hashtable[10010]={0};
int main(){
string s;
int sum=0;
char str[6]={'P','A','T','e','s','t'};
cin>>s;
//第一步:把符合条件的字符存进hashtable中
for(int i=0;i<s.length();i++){
for(int j=0;j<6;j++)
if(s[i]==str[j]){
hashtable[s[i]]++;
sum++;//要打印的个数;
}
}
//第二步:if要打印的sum大于0,继续打印,注意,打印一次需要减一
while(sum){
for(int i=0;i<6;i++){
if(hashtable[str[i]]){
cout<<str[i];
hashtable[str[i]]--;
}
}
}
return 0;
}