- 题目描写叙述:
-
读入一个字符串。字符串中包括ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出。当某个字符用完时,剩下的仍然依照ZOJ的顺序输出。
- 输入:
-
题目包括多组用例,每组用例占一行,包括ZOJ三个字符,当输入“E”时表示输入结束。
1<=length<=100。
- 输出:
-
对于每组输入,请输出一行。表示依照要求处理后的字符串。
详细可见例子。
- 例子输入:
-
ZZOOOJJJ ZZZZOOOOOJJJ ZOOOJJ E
- 例子输出:
-
ZOJZOJOJ ZOJZOJZOJZOO ZOJOJO
- 答疑:
- 解题遇到问题?分享解题心得?讨论本题请訪问:http://t.jobdu.com/thread-7756-1-1.html
#include<stdio.h> #include<string.h> int main() { char s[100]; int i; while(scanf("%s",s)!=EOF){ if(strcmp(s,"E")==0) break; int z=0,o=0,j=0; for(i=0;s[i]!='\0';i++){ if(s[i]=='Z') z++; else if(s[i]=='O') o++; else j++; } if(z>o){ if(o>j){ // z o j for(i=0;i<j;i++) printf("ZOJ"); for(i=0;i<o-j;i++) printf("ZO"); for(i=0;i<z-o;i++) printf("Z"); } else if(z>j) { // z j o for(i=0;i<o;i++) printf("ZOJ"); for(i=0;i<j-o;i++) printf("ZJ"); for(i=0;i<z-j;i++) printf("Z"); } else{ // j z o for(i=0;i<o;i++) printf("ZOJ"); for(i=0;i<z-o;i++) printf("ZJ"); for(i=0;i<j-z;i++) printf("J"); } }else { if(z>j){ // o z j for(i=0;i<j;i++) printf("ZOJ"); for(i=0;i<z-j;i++) printf("ZO"); for(i=0;i<o-z;i++) printf("O"); } else if(j>o) { // j o z for(i=0;i<z;i++) printf("ZOJ"); for(i=0;i<o-z;i++) printf("OJ"); for(i=0;i<j-o;i++) printf("J"); } else {// o j z for(i=0;i<z;i++) printf("ZOJ"); for(i=0;i<j-z;i++) printf("OJ"); for(i=0;i<o-j;i++) printf("O"); } } printf("\n"); } return 0; } /************************************************************** Problem: 1032 User: vhreal Language: C Result: Accepted Time:0 ms Memory:912 kb ****************************************************************/