题解 | ZOJ
#include<iostream> #include<stdio.h> #include<cstring> #include<map> using namespace std; int main() { string s; while (cin >> s) { map<char, int>m; m['Z'] = m['O'] = m['J']; for(int i = 0; i < s.length(); i++) { m[s[i]]++; } while(m['Z'] > 0 || m['O'] > 0 || m['J'] > 0) { if(m['Z'] > 0) cout << 'Z'; m['Z'] --; if(m['O'] > 0) cout << 'O'; m['O'] --; if(m['J'] > 0) cout << 'J'; m['J'] --; } } }
只需要依次输出Z O J,然后要求一个条件,大于0,然后输出后数量减一即可