自己写的:
#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; }