【GPLT】 L1-023 输出GPLT
题目描述:
给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....
这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT
的顺序打印,直到所有字符都被输出。
输入描述:
输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。
输出描述:
在一行中按题目要求输出排序后的字符串。题目保证输出非空。
输入样例:
pcTclnGloRgLrtLhgljkLhGFauPewSKgt
输出样例:
GPLTGPLTGLTGLGLL
解题思路:
建立一个map来记录’G’、’P’、’L’、’T’每种字符各有多少个,然后用while和if来操作,让程序按GPLTGPLT....
这样的顺序输出。若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出为止。
AC代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
getline(cin,s);
transform(s.begin(),s.end(),s.begin(),::toupper); //将字符串全部转换成大写形式
map<char,int> m; //用来记录G、P、L、T的数量
for (int i = 0; i < s.length(); i++)
{
m[s[i]]++;
}
string result = "";
while(m['G']||m['P']||m['L']||m['T']) //只要GPLT没有全部为空,就可以按顺序输出
{
if(m['G'])
{
result += "G";
m['G']--;
}
if(m['P'])
{
result += "P";
m['P']--;
}
if(m['L'])
{
result += "L";
m['L']--;
}
if(m['T'])
{
result += "T";
m['T']--;
}
}
cout << result << endl;
return 0;
}
原文链接:【GPLT】 L1-023 输出GPLT
麦芽雪冷萃 版权所有,转载请注明出处。
还没有任何评论,你来说两句吧!