对 "ZOJ7" 4个字符单独排序输出即可
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <memory.h>
using namespace std;
const int maxn = 1010;
char zojs[maxn],others[maxn],str[maxn];
int tb[128];
bool cmp(const char & ch1, const char & ch2){
return tb[ch1] < tb[ch2];
}
int main(){
tb['Z'] = 0;
tb['O'] = 1;
tb['J'] = 2;
tb['7'] = 3;
while(~scanf("%s", str)){
memset(zojs, 0, sizeof(zojs));
memset(others, 0, sizeof(others));
int i = 0, j = 0;
int len = strlen(str);
for(int k = 0; k < len ;++k){
if(str[k] == 'Z' || str[k] == 'O' || str[k] == 'J' || str[k] == '7'){
zojs[i++] = str[k];
}else{
others[j++] = str[k];
}
}
sort(zojs, zojs + i, cmp);
printf("%s%s\n", zojs, others);
}
return 0;
}