1043. 输出PATest(20)

题目描述

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

输入格式:

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

输出格式:

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

输入样例:

redlesPayBestPATTopTeePHPereatitAPPT

输出样例:

PATestPATestPTetPTePePee

提交代码

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
#include <cstdio>
int main()
{
char ch;
int idx;
int max = 0;
int count[128] = {0};
char str[] = "PATest";

// count all the character directly omitting the judgment
while (scanf("%c", &ch) && ch != '\n') {
count[ch]++;
}

for (idx = 0; idx < 6; idx++) {
if (count[str[idx]] > max) {
max = count[str[idx]];
}
}

while (max--) {
for (idx = 0; idx < 6; idx++) {
if (count[str[idx]] != 0) {
printf("%c", str[idx]);
count[str[idx]]--;
}
}
}

return 0;
}

个人思考

这道题本来想着说统计 PATest 中字符出现的次数,后来想了想发现,直接开个大数组,不做判断地对所有输入的字符做统计,然后再按 PATest 输出好像更简单点。