本文共 936 字,大约阅读时间需要 3 分钟。
给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新排序,按照“GPLTGPLT……”的顺序输出,并忽略其他字符。需要注意的是,这四个字符(不区分大小写)的数量可能并不完全相同。如果某种字符已经全部输出完成,剩下的字符仍然按照GPLT的顺序进行打印,直到所有字符都被排完。
输入格式:输入在一行中提供一个长度不超过10000的、仅由英文字母组成的非空字符串。
输出格式:输出在一行中按照题目要求排完后的字符串。题目保证输出结果非空。
输入样例:"pcTclnGloRgLrtLhgljkLhGFauPewSKgt"
输出样例:"GPLTGPLTGLTGLGLL"
#includeint main(){ char a[10005]; int i, g = 0, p = 0, l = 0, t = 0, len; gets(a); len = strlen(a); for (i = 0; i < len; ++i) { switch(a[i]) { case 'G': g++; break; case 'P': p++; break; case 'L': l++; break; case 'T': t++; break; } if (g && p && l && t) { printf("GPLT"); g--; p--; l--; t--; } }}
这个代码实现了题目的要求。它通过遍历字符串中的每个字符,统计每种字符的出现次数。当四种字符的数量都达到至少一次时,就按顺序输出'GPLT',并同时减少各自的计数,所以每条'GPLT'的输出都对应每个字符至少减少一次数量。这样循环下去,直到所有字符都被处理完毕。
转载于:https://www.cnblogs.com/songCode/p/6836947.html