PAT 乙级 1043 输出PATest
输入样例:
redlesPayBestPATTopTeePHPereatitAPPT
输出样例:
PATestPATestPTetPTePePee
原题链接
分析:
这题比较简单,用一个长度为6的数组分别记录字符串中各个字母出现的次数。count中元素不全为0的时候就遍历一遍,那个数不为0,输出一个相应的字符,同时该数减1.
源码:
#include<stdio.h>
#include<string.h>
int main()
{
char str[10010];
int count[6] = { 0 };
int i;
scanf("%s", str);
for (int i = 0; i < strlen(str); i++) {
if (str[i] == 'P')count[0]++;
else if (str[i] == 'A')count[1]++;
else if (str[i] == 'T')count[2]++;
else if (str[i] == 'e')count[3]++;
else if (str[i] == 's')count[4]++;
else if (str[i] == 't')count[5]++;
}
while (count[0] != 0 || count[1] != 0 || count[2] != 0 || count[3] != 0 || count[4] != 0 || count[5] != 0) {
if (count[0] > 0) {
count[0]--; printf("P");
}
if (count[1] > 0) {
count[1]--; printf("A");
}
if (count[2] > 0) {
count[2]--; printf("T");
}
if (count[3] > 0) {
count[3]--; printf("e");
}
if (count[4] > 0) {
count[4]--; printf("s");
}
if (count[5] > 0) {
count[5]--; printf("t");
}
}
return 0;
}
PS:
我C/C++还不是特别熟练,写的代码总是很繁琐,等有时间在来改进吧。