游客 Signup | Login
中文 | En

1541 - ZOJ

读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。

Input

题目包含多组用例,每组用例占一行,包含ZOJ三个字符,当输入“E”时表示输入结束。

1<=length<=100。

Output

对于每组输入,请输出一行,表示按照要求处理后的字符串。

具体可见样例。

Examples

Input

ZZOOJJJ
ZOOOJJZOJ
ZZOJ
E

Output

ZOJZOJJ
ZOJZOJOJO
ZOJZ

Solution C

#include <stdio.h>
#include <string.h>
int main()
{
  while(1)
  {
    char line[100];
    scanf("%s",line);
    if(strcmp(line,"E")==0)
    {
      break;
    }
    int zp=0;
    int op=0;
    int jp=0;
    for(int i=0;i<strlen(line);i++)
    {
      if(line[i]=='Z')
      {
        zp++;
      }
      if(line[i]=='O')
      {
        op++;
      }
      if(line[i]=='J')
      {
        jp++;
      }
    }
    while(zp!=0||op!=0||jp!=0)
    {
      if(zp!=0)
      {
        printf("Z");
        zp--;
      }
      if(op!=0)
      {
        printf("O");
        op--;
      }
      if(jp!=0)
      {
        printf("J");
        jp--;
      }
    }
    printf("\n");
  }
}

Solution C++

#include <cstdio>
#include <map>
using namespace std;

int main() {
    //freopen("data.in", "r", stdin);
    //freopen("data.out", "w", stdout);
    char s[105];
    while (gets(s)) {
        if ('E' == s[0])
            break;
        map < char, int > mp;
        char zoj[5] = "ZOJ";
        for (char *c = s; *c; ++c)
            ++mp[*c];
        while (1) {
            bool flag = false;
            for (char *c = zoj; *c; ++c)
                if (mp[*c] > 0) {
                    --mp[*c];
                    flag = true;
                    putchar(*c);
                }
            if (!flag) break;
        }
        puts("");
    }
    return 0;
}

Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题