ZOJ
来源:互联网 发布:淘宝人气值是什么 编辑:程序博客网 时间:2024/06/03 18:37
题目链接
Problem Description
读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。
Input
题目包含多组用例,每组用例占一行,包含ZOJ三个字符,当输入“E”时表示输入结束。
1<=length<=100。
Output
对于每组输入,请输出一行,表示按照要求处理后的字符串。
具体可见样例。
Sample Input
ZZOOOJJJ
ZZZZOOOOOJJJ
ZOOOJJ
E
Sample Output
ZOJZOJOJ
ZOJZOJZOJZOO
ZOJOJO
//基本思路:分成3个数组#include<iostream>#include<cstring>using namespace std;int main(){ char s[105]; memset(s,0,sizeof(s)); while(cin>>s){ if(*s=='E') break; char sz[105],so[105],sj[105]; int iz = 0, io = 0, ij = 0; memset(sz,0,sizeof(sz)); memset(so,0,sizeof(so)); memset(sj,0,sizeof(sj)); int length = strlen(s); for(int i = 0;i<length;i++){ if(s[i]=='Z') sz[iz++] = 'Z'; else if(s[i]=='O') so[io++] = 'O'; else sj[ij++] = 'J'; } int x = 0, y = 0, z = 0; while(x<iz||y<io||z<ij){ for(;x<iz;){//x++不能放在for里面 cout<<'Z'; x++; break; } for(;y<io;){//同理 cout<<'O'; y++; break; } for(;z<ij;){ cout<<'J'; z++; break; } } cout<<endl; } return 0;}
第二种方法:将空间作为代价,换取时间
//基本思路:将ASCII码值作为下标#include<iostream>#include<cstring>using namespace std;int main(){ char s[105]; int num[128]; memset(s,0,sizeof(s)); fill(num,num+128,0);//初始化 while(cin>>s){ if(*s=='E') break; int length = strlen(s); for(int i = 0;i<length;i++) num[s[i]-'A']++; while(length--){ //三者之间是并列的关系不能使用if-else if-else结构 if(num['Z'-'A']>0){ cout<<'Z'; num['Z'-'A']--; } if(num['O'-'A']>0){ cout<<'O'; num['O'-'A']--; } if(num['J'-'A']>0){ cout<<'J'; num['J'-'A']--; } } cout<<endl; } return 0;}
第三种方法:简单粗暴(第一种方法的改进版本)
#include<iostream>#include<cstring>using namespace std;int main(){ char s[105]; memset(s,0,sizeof(s)); while(cin>>s){ if(*s=='E') break; int length = strlen(s); int iz = 0, io = 0, ij = 0; for(int i = 0;i<length;i++){ if(s[i]=='Z') iz++; else if(s[i]=='O') io++; else ij++; } while(iz>0||io>0||ij>0){ if(iz>0){ cout<<'Z'; iz--; } if(io>0){ cout<<'O'; io--; } if(ij>0){ cout<<'J'; ij--; } } cout<<endl; } return 0;}
阅读全文
0 0
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- BZOJ 1030: [JSOI2007]文本生成器 AC自动机
- Search for a Range leetcode java
- Jenkins的PythonAPI
- HashMap :和Hashtable 区别
- 接口和抽象类的区别
- ZOJ
- Okhttp之同步和异步请求简单分析
- 了解编译和链接
- scala中实现break与continue功能
- Java值传递
- C语言使用getch()读取方向键
- python的matplotlib模块实现tensorflow结果可视化
- HDU 6096 String(2017 Multi-University Training Contest
- 小白学tkinter(tags(标签)的用法)