杭电1020 Encoding (字符串处理)

来源:互联网 发布:ubuntu mate 安装pyqt 编辑:程序博客网 时间:2024/05/18 10:42

Encoding

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


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
2ABCABBCCC
 


 

Sample Output
ABCA2B3C
 


 

Author
ZHANG Zheng

 题中变形与一般的不同 需要及时输出相同字母的个数所以方法稍有不同。

代码如下:

#include<stdio.h>

int main()

{

 int n,m;

 char c1,c2;

 scanf("%d",&n);

 c1=getchar();//此处为吸收换行符

 while(n--)

 

{

 int m=1;

 c1=getchar();//此处吸收第一个字符

 while(1)

 {

 c2=getchar();

 if(c1!=c2)

 {

 if(m==1)

printf("%c",c1);

 else

 printf("%d%c",m,c1);

 if(c2=='\n')

 break;

m=1; //此处重新化为1 重新计数

c1=c2;//将二复制给一 使能够循环进行吸收比较

 }

 else

 m++;

 }

 printf("\n");

 }

 return 0;

}

0 0
原创粉丝点击