-
题目描述:
-
读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。
-
输入:
-
题目包含多组用例,每组用例占一行,包含ZOJ三个字符,当输入“E”时表示输入结束。
1<=length<=100。
-
输出:
-
对于每组输入,请输出一行,表示按照要求处理后的字符串。
具体可见样例。
-
样例输入:
-
ZZOOOJJJ ZZZZOOOOOJJJ ZOOOJJ E
-
样例输出:
-
ZOJZOJOJ ZOJZOJZOJZOO ZOJOJO
- #include <iostream>
- #include <string>
- #include <algorithm>
- #include <memory.h>
- #include <cstdio>
- #include <cstdlib>
- using namespace std;
- int a[3];
- char b[3] = {'Z', 'O', 'J'};
- int main(){
- //freopen("in.txt", "r", stdin);
- string s;
- while(cin>>s, s!="E"){
- int len = s.length();
- for(int i=0;i<3;++i)
- a[i] = 0;
- for(int i=0;i<len;++i){
- switch(s[i]){
- case 'Z':a[0]++;break;
- case 'O':a[1]++;break;
- case 'J':a[2]++;break;
- }
- }
- for(int i=0;len;i=(i+1)%3){
- if(a[i]!=0){
- len--;
- a[i]--;
- printf("%c", b[i]);
- }
- }
- printf("\n");
- }
- //fclose(stdin);
- }
字符串重组算法
本文介绍了一个字符串处理算法,该算法读取包含特定字符的字符串,并按照指定顺序重新组织这些字符。通过对输入字符串进行计数和遍历,实现了字符的有序输出。
3601

被折叠的 条评论
为什么被折叠?



