九度论坛--上机题1032:ZOJ
2014-01-22 00:29
218 查看
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';
}
}
相关文章推荐
- 九度论坛--上机题1179:阶乘
- 九度论坛--上机题1010: A+ B
- Javascript中最常用的55个经典技巧…
- Javascript中最常用的55个经典技巧…
- 你必须知道的204个Visual C++开发问题
- 数据结构 课程设计 实例
- C语言中关于对目录的操作
- UltraEdit 文件关联
- Javascript中最常用的55个经典技巧(3)
- Javascript中最常用的55个经典技巧(2)
- Javascript中最常用的55个经典技巧(1)
- 电脑升级
- 诡异的异或运算,偶数个相同的数据按位异或后是0,可以凸显出不同的数据
- Oracle PL/SQL 使用隐式游标
- MYSQL导入导出数据库
- QString的基本方法
- QT4.7.3连接MYsql5.5全过程【整理】
- Qt中连接Mysql数据库的方法
- Connection to adb down ,severe error has occured
- http返回网页状态码查询