题目链接
题目描述
给定一个长度不超过 10
4
的、仅由英文字母构成的字符串。请将字符重新调整顺序,按 PATestPATest.... 这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按 PATest 的顺序打印,直到所有字符都被输出。
输入格式:
输入在一行中给出一个长度不超过 10
4
的、仅由英文字母构成的非空字符串。
输出格式:
在一行中按题目要求输出排序后的字符串。题目保证输出非空。
输入样例:
redlesPayBestPATTopTeePHPereatitAPPT
输出样例:
PATestPATestPTetPTePePee
题目大意
给你一串字符串,让你从中调出特定的输出
解题思路
先用map
存储出现的字母次数,键
代表字母
,值
代表字母出现的次数
,然后通过while循环
判断是否要输出的字母数量全为0
全为0
则调出循环不全为0
则继续循环直到消耗完所有要输出的字母
题解
#include<bits/stdc++.h>
using namespace std;
map<char,int> ma;
int main(){
string s;
cin>>s;
for(int i=0;i<s.length();i++) ma[s[i]]++;
while(ma['P']!=0||ma['A']!=0||ma['T']!=0||ma['e']!=0||ma['s']!=0||ma['t']!=0){
//当要输出的所有字母全为0的时候跳出循环
if(ma['P']>0){
ma['P']--;
cout<<"P";
}
if(ma['A']>0){
ma['A']--;
cout<<"A";
}
if(ma['T']>0){
ma['T']--;
cout<<"T";
}
if(ma['e']>0){
ma['e']--;
cout<<"e";
}
if(ma['s']>0){
ma['s']--;
cout<<"s";
}
if(ma['t']>0){
ma['t']--;
cout<<"t";
}
}
}