给定一个长度不超过 104 的、仅由英文字母构成的字符串。请将字符重新调整顺序,按 PATestPATest....
这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按 PATest 的顺序打印,直到所有字符都被输出。
输入格式:
输入在一行中给出一个长度不超过 104 的、仅由英文字母构成的非空字符串。
输出格式:
在一行中按题目要求输出排序后的字符串。题目保证输出非空。
输入样例:
redlesPayBestPATTopTeePHPereatitAPPT
输出样例:
PATestPATestPTetPTePePee
/*
本题要将字符串中PATest字符按照顺序输出,如此长的字符串肯定不可能多次循环依次找
各个字母,这里只需要输出的时候有顺序即可,所以我们可以用一个数组来统计PATtest
各字符的个数,然后按照顺序循环输出,若个数为0则不输出即可;
*/
#include<iostream>
using namespace std;
int main(){
//字母计数;
int Data[6]; //对应P、A、T、e、s、t;
//置零;
for(int i=0;i<6;i++){
Data[i]=0;
}
//逐个计数;
char c=getchar();
while(c!='\n'){ //逐个读入;
if(c=='P'){
Data[0]++;
}
else if(c=='A'){
Data[1]++;
}
else if(c=='T'){
Data[2]++;
}
else if(c=='e'){
Data[3]++;
}
else if(c=='s'){
Data[4]++;
}
else if(c=='t'){
Data[5]++;
}
c=getchar();
}
//输出;计数器内有数则输出;
//查看计数器内最大值;
int max=Data[0];
for(int i=0;i<6;i++){
//最大值;
if(Data[i]>max){
max=Data[i];
}
}
//以最大数进行输出;
for(int i=0;i<max;i++){
if(Data[0]>0){
Data[0]--;
cout<<'P';
}
if(Data[1]>0){
Data[1]--;
cout<<'A';
}
if(Data[2]>0){
Data[2]--;
cout<<'T';
}
if(Data[3]>0){
Data[3]--;
cout<<'e';
}
if(Data[4]>0){
Data[4]--;
cout<<'s';
}
if(Data[5]>0){
Data[5]--;
cout<<'t';
}
}
cout<<endl;
return 0;
}