ZOJ Problem Set - 2478 Encoding(关于getchar()的小问题)

来源:互联网 发布:.me域名可以不备案吗 编辑:程序博客网 时间:2024/06/06 01:12

/*ZOJ Problem Set - 2478

Encoding

Time Limit: 1 Second      Memory Limit: 32768 KB

Given a string containing only 'A' - 'Z', we could encode it using the following method:

 

1. Each sub-string containing k same characters should be encoded to "kX" where "X" is the only character in this sub-string.

 

2. If the length of the sub-string is 1, '1' should be ignored.

 

 

Input

 

The first line contains an integer N (1 <= N <= 100) which indicates the number of test cases. The next N lines contain N strings. Each string consists of only 'A' - 'Z' and the length is less than 100.

 

 

Output

 

For each test case, output the encoded string in a line.

 

 

Sample Input

 

2

ABC

ABBCCC

 

 

Sample Output

 

ABC

A2B3C

*/

 

逐字符处理,数组都不用开

 

#include <iostream>

#include <stdio.h>

using namespace std;

 

 

int main()

{

    int t;

    while(cin>>t)

    {

        getchar();        //读掉缓冲区中的回车符,此处如果没有getchar(),则由下面一个getchar()即pre来获得回车符,导致在第一次输出

        while(t--)         //的时候多输出了一个换行,但是结果不受影响

        {

            int c=1;

            char pre,cur;

            pre=getchar();  //**

            while(cur=getchar())

            {

                if(cur==pre)

                    ++c;

                else

                {

                    if(c==1)cout<<pre;

                    else {cout<<c<<pre; c=1;}

                }

                if(cur=='/n')break;

                pre=cur;

            }

            cout<<endl;

        }

    }

}

原创粉丝点击