杭电ACM id:3783

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

 

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

 

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

 

Sample Input
ZZOOOJJJ ZZZZOOOOOJJJ ZOOOJJ E
 

 

Sample Output
ZOJZOJOJ ZOJZOJZOJZOO ZOJOJO
 

   解题思路:
        好久没ac了;

        关于c++如何输入字符串都想了半天;

        做题时另外注意的一点就是输出格式输出末尾都要加cout<<endl;

        1.首先要分别记录ZOJ的个数然后再根据ZOJ个数输出然后减一

   #include<iostream>
#include<string>
using namespace std;
int main()
{
 string msg;
 
   while( cin>>msg)
   {
      int z=0;  //计算z的数量
      int o=0;  //计算o的数量
      int j=0;  //计算j的数量
      if(msg=="E")
      {
     
         break;
      }
      int n = msg.length();
      for(int i=0;i<n;i++)
      {
        char mychar=msg[i];
        if(mychar=='Z')
        {
           z++;
         }
         else if(mychar=='O')
         {
            o++;
         }
         else
         {
            j++;
         }
      }
      for(int a=0;a<n;a++)
      {
         if(z!=0)
         {
           cout<<"Z";
           z--;
         }
         if(o!=0)
         {
          cout<<"O";
          o--;
         }
         if(j!=0)
         {
          cout<<"J";
          j--;
         }
       
      }
      cout<<endl;
     
   }
   return 0;
}

Source
posted @ 2014-05-14 21:59  -琥珀川-  阅读(247)  评论(0编辑  收藏  举报