L1-023 输出GPLT(字符串)

给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按 GPLTGPLT.... 这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按 GPLT 的顺序打印,直到所有字符都被输出。

输入格式:

输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。

输出格式:

在一行中按题目要求输出排序后的字符串。题目保证输出非空。

输入样例:

1
pcTclnGloRgLrtLhgljkLhGFauPewSKgt

输出样例:

1
GPLTGPLTGLTGLGLL

思路:

用map统计出现的次数,再把大小写合起来,按顺序输出。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <bits/stdc++.h>
using namespace std;

int a, b, c, d;
string s;
map<char, int> m;

int main()
{
cin >> s;
for(int i = 0; i < s.length(); i++)
{
m[s[i]]++;
}
a = m['G'] + m['g'];
b = m['P'] + m['p'];
c = m['L'] + m['l'];
d = m['T'] + m['t'];
while(a > 0 || b > 0 || c > 0 || d > 0)
{
if(a != 0)
{
cout << "G";
a--;
}
if(b != 0)
{
cout << "P";
b--;
}
if(c != 0)
{
cout << "L";
c--;
}
if(d != 0)
{
cout << "T";
d--;
}
}

return 0;
}