Descripe
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 10000.
Output
Sample Input
2
ABC
ABBCCC
Sample Output
ABC
A2B3C
#include <iostream>
using namespace std;
int main(void)
{
char a[10002];
int t;
pair<int, char> b[1000];
while(cin >> t)
{
while(t--)
{
int i = 0;
int n = 0;
cin >> a;
if(strlen(a)==1)
{
cout << a << endl;
continue;
}
for( ; a[i]!=‘\0‘; i++)
{
if(i==0 || a[i]!=a[i-1])
{
b[n].first = 0;
b[n].second = a[i];
}
if(a[i]!=a[i+1])
{
b[n++].first++;
continue;
}
b[n].first++;
}
for(i = 0; i < n; i++)
{
if(b[i].first!=1)
cout << b[i].first;
cout << b[i].second;
}
cout << endl;
}
}
return 0;
}
原文:http://www.cnblogs.com/limyel/p/6691466.html