首页 > 代码库 > 九度OJ-1032-ZOJ

九度OJ-1032-ZOJ

题目描述:
读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。
输入:
题目包含多组用例,每组用例占一行,包含ZOJ三个字符,当输入“E”时表示输入结束。
1<=length<=100。
输出:
对于每组输入,请输出一行,表示按照要求处理后的字符串。
具体可见样例。
样例输入:
ZZOOOJJJ
ZZZZOOOOOJJJ
ZOOOJJ
E
样例输出:
ZOJZOJOJ
ZOJZOJZOJZOO
ZOJOJO

 

思路:

仅有Z、O、J三种字符,输出必须有序。可以扫描一次字符串后归入3种统计量中,然后循环输出。

 

过程:

1获取输入字符串,判定是否为‘E’,是则结束,否继续。

2扫描字符串,统计3种字符各自数量。

3按序循环输出,总字符数为0时停止,各字符统计量大于0时输出,每输出一次减一,直到为0不输出。

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     string a;
 6     while(cin>>a)
 7     {
 8         if(a=="E")
 9             return 0;
10         int z=0,o=0,j=0;
11         for(int i=0;i<a.length();i++)
12         {
13             if(a[i]==Z)
14                 z++;
15             else if(a[i]==O)
16                 o++;
17             else
18                 j++;
19         }
20         while(z+o+j>0)
21         {
22             if(z>0)
23             {
24                 cout<<Z;
25                 z--;
26             }
27             if(o>0)
28             {
29                 cout<<O;
30                 o--;
31             }
32             if(j>0)
33             {
34                 cout<<J;
35                 j--;
36             }
37         }
38         cout<<endl;
39     }
40 }

 

九度OJ-1032-ZOJ