1032.ZOJ问题

题目描述:
读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。
输入:
题目包含多组用例,每组用例占一行,包含ZOJ三个字符,当输入“E”时表示输入结束。
1<=length<=100。
输出:
对于每组输入,请输出一行,表示按照要求处理后的字符串。
具体可见样例。
样例输入:
ZZOOOJJJ
ZZZZOOOOOJJJ
ZOOOJJ
E
样例输出:
ZOJZOJOJ
ZOJZOJZOJZOO
ZOJOJO
#include<iostream>
#include<cstring>
using namespace std;

int main(){
    string s;
    while(getline(cin,s) && s!="E"){
        int z=0,o=0,j=0;
        for(int i=0;i<s.size();i++){
            if(s[i]=='Z') z++;
            else if(s[i]=='O') o++;
            else if(s[i]=='J') j++;
        }
        for(;z>0 && o>0 && j>0;z--,o--,j--){
            cout<<"ZOJ";
        }
        if(z==0){
            for(;o>0 && j>0;o--,j--){
                cout<<"OJ";
            }
            if(o==0) {
                for(;j>0;j--) cout<<"J";
            }
            else for(;o>0;o--) cout<<"O";
        }
        if(o==0){
            for(;z>0 && j>0;z--,j--){
                cout<<"ZJ";
            }
            if(z==0) {
                for(;j>0;j--) cout<<"J";
            }
            else for(;z>0;z--) cout<<"Z";
        }
        if(j==0){
            for(;o>0 && z>0;o--,z--){
                cout<<"ZO";
            }
            if(o==0) {
                for(;z>0;z--) cout<<"Z";
            }
            else for(;o>0;o--) cout<<"O";
        }
        cout<<endl;
        }
        return 0;
}
原文地址:https://www.cnblogs.com/bernieloveslife/p/9736573.html