九度论坛--上机题1032:ZOJ

1032: ZOJ

时间限制: 1Sec    内存限制: 32 MB
提交:162    解决: 102

题目描述

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

输入

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

输出

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

样例输入

ZZOOOJJJ
ZZZZOOOOOJJJ
ZOOOJJ
E

样例输出

ZOJZOJOJ
ZOJZOJZOJZOO
ZOJOJO

提示

来源

2009年浙江大学计算机及软件工程研究生机试真题

 

#include <iostream>
#include <string>
using namespace std;

char min_size(int size_z,int size_o,int size_j);

int main()
{
 string str;
 int length;
 while(cin>>str)
 {
  if(str =="E")
   break;
  string str_z,str_o,str_j;
  int size_z,size_o,size_j;
  
  size_z=size_o=size_j = 0;
  length = str.size();
  int i;
  for(i=0;i<length;i++)
  {
   if(str[i] =='Z')
   {
    str_z+=str[i];
   }
   elseif(str[i] == 'O')
   {
    str_o+=str[i];
   }
   else
   {
    str_j+=str[i];
   }
  }
  size_z = str_z.size();
  size_o = str_o.size();
  size_j = str_j.size();
  int n ,index;
  switch(min_size(size_z,size_o,size_j))
  {
  case 'Z':
   {
    n=size_z;
    break;
   }
  case 'O':
   {
    n= size_o;
    break;
   }
  case 'J':
   {
    n= size_j;
    break;
   }
  default:
   break;
  }
  for(index=0;index<n;index++)
  {
   cout<<str_z[index]<<str_o[index]<<str_j[index];
  }
  while(index <size_z || index < size_o || index <size_j)
  {
   if(index<size_z)
    cout<<str_z[index];
   if(index<size_o)
    cout<<str_o[index];
   if(index<size_j)
    cout<<str_j[index];
   index++;
  }
  cout<<endl;
 }
 //cin>>str;
 //cout<<str<<endl;
 
 return 0;
}

char min_size(int size_z,int size_o,int size_j)
{
 int tem;
 char flag ;
 if(size_z <size_o)
 {
  tem = size_z;
  flag = 'z';
 }
 else
 {
  tem = size_o;
  flag = 'o';
 }
 if(size_j < tem)
  return 'J';
 else
 {
  if(flag == 'z')
   return'Z';
  else
   return'O';
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值