给定一个长度不超过 10000 的, 仅由英文字母构成的字符串. 请将字符重新调整顺序, 按 GPLTGPLT.... 这样的顺序输出, 并忽略其它字符. 当然, 四种字符 (不区分大小写) 的个数不一定是一样多的, 若某种字符已经输出完, 则余下的字符仍按 GPLT 的顺序打印, 直到所有字符都被输出.
输入格式:
输入在一行中给出一个长度不超过 10000 的, 仅由英文字母构成的非空字符串.
输出格式:
在一行中按题目要求输出排序后的字符串. 题目保证输出非空.
输入样例:
pcTclnGloRgLrtLhgljkLhGFauPewSKgt
输出样例:
GPLTGPLTGLTGLGLL
思路
通过指针计算字符串中 p,t,l,g 的个数, 通过循环进行打印 GPLT
代码
- #include<stdio.h>
- void number(char *p);
- int Gnum,Tnum,Pnum,Lnum;
- int main()
- {
- char ch[10000]={0};
- char *p;
- scanf("%s",&ch); // 输入字符串
- number(ch);
- while(1){ // 打印 GPLT
- if(Gnum!=0){
- printf("G");
- Gnum--;
- }
- if(Pnum!=0){
- printf("P");
- Pnum--;
- }
- if(Lnum!=0){
- printf("L");
- Lnum--;
- }
- if(Tnum!=0){
- printf("T");
- Tnum--;
- }
- if(Gnum==0&&Pnum==00&&Lnum==0&&Tnum==0)
- break;
- }
- return 0;
- }
- void number(char *p) // 计算大小写 g,t,p,l 的个数
- {
- while(*p!='\0'){
- if(*p=='G'||*p=='g') Gnum++;
- if(*p=='P'||*p=='p') Pnum++;
- if(*p=='L'||*p=='l') Lnum++;
- if(*p=='T'||*p=='t') Tnum++;
- p++;
- }
- }
来源: http://www.bubuko.com/infodetail-2939058.html