zoukankan      html  css  js  c++  java
  • akoj-1076-Encoding

    Encoding

    Time Limit:1000MS  Memory Limit:65536K
    Total Submit:62 Accepted:35

    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

    Source

    #include <stdio.h>
    #include <string.h>
    #define MAXN 10000 + 10
    
    char str[MAXN];
    
    int main()
    {
    
    	int n, i, k, c, thisn, maxn;
    	scanf("%d", &n);
    	while (n--)
    	{
    		c = 0;
    		scanf("%s", str);
    		k = strlen(str);
    		str[k] = -1; // 这里的输入长度小于定义的长度所以不会越界 
    		thisn = maxn = 0;
    		for ( i=0; i<k; i++ ) {
    			thisn++;
    			if ( thisn > maxn ) {    //实时更新段的长度 
    				maxn = thisn;
    			}
    			if ( str[i+1] != str[i] ) { // 当后面的与前面的不同时输出之前的 
    				thisn = 0;
    				if ( maxn == 1 ) {
    					printf("%c", str[i]);
    				}
    				else {
    					printf("%d%c", maxn, str[i]);
    					maxn = 0; // 输出后将最大长度再次赋值为0 
    				}
    			}
    		}
    		
    		printf("
    ");
    	}
    	
    	return 0;
    } 


  • 相关阅读:
    How to access the properties of an object in Javascript
    他们不是机器人
    sql 使用整理
    地图上计算两点间的距离.(参考网络)
    window.location.reload被弃用?
    BitBlt
    BitBlt介绍
    C#大数计算 .Net Framework4.0以下
    C# ToString格式化
    Ubuntu修改时区和更新时间
  • 原文地址:https://www.cnblogs.com/fayne/p/7224823.html
Copyright © 2011-2022 走看看