/*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;
}
}
}