Encoding

Encoding

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 21830    Accepted Submission(s): 9547


Problem Description
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
For each test case, output the encoded string in a line.
 
Sample Input
2 ABC ABBCCC
 
Sample Output
ABC A2B3C
 题目不难字符串处理问题,从第一个字符开始查起,统计连续相同字符的个数,输出即可
 
 
#include<stdio.h>
#include<string.h>
char str[10001];
int main()
{
    int T,i,cnt,len;
    char *p,*q;
    scanf("%d",&T);
    while(T--)
    {
        cnt = 1;
        scanf("%s",str);
        len = strlen(str);
        p = str;
        for(q = p; q < str+len;q++ )
        {
            while(*q==*(q+1))
            {
                cnt++;
                q++;
            }
            if(cnt!=1)
            {
                printf("%d%c",cnt,*q);
                cnt = 1;
            }
            else
                printf("%c",*q);
        }
        puts("");
    }
    return 0;
}

原文地址:https://www.cnblogs.com/anhuizhiye/p/3318221.html