给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按“GPLTGPLT....”这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。
输入格式:
输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。
输出格式:
在一行中按题目要求输出排序后的字符串。题目保证输出非空。
输入样例:
pcTclnGloRgLrtLhgljkLhGFauPewSKgt
输出样例:
GPLTGPLTGLTGLGLL
时间限制
150 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越
注意:题目要求,不区分大小写,所以在判断条件时要加一个str[i] == a[j] +'a' - 'A',即,加上大写字母到小写字母的ASCII差距。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 10001 int GetMax(int c[]) { int i; int max = 0; for(i = 0; i < 4; i++) { if(c[i] > max) max = c[i]; } return max; } int main() { char str[N+1]; char a[5] = {'G', 'P', 'L', 'T'}; int b[4] = {0}; int i; int j; int max; scanf("%s", str); for(i = 0; i < strlen(str); i++) { for(j = 0; j < 4; j++) { if(str[i] == a[j] || str[i] == a[j] +'a' - 'A') { b[j]++; } } } max = GetMax(b); while(max != 0) for(i = 0; i < 4; i++) { if(b[i] != 0) { printf("%c", a[i]); b[i]--; max = GetMax(b); } } return 0; }