• [HDU1020] Encoding


    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.

    给定一个只含有'A'-'Z'的字符串,我们可以用下面的方法对其进行加密:

    1. 每个含有k个相同字符的子字符串应该被加密为"kX","X"是子字符串中唯一的字符。

    2. 如果子字符串的长度为1,'1'应该被忽略。

    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 only 'A' - 'Z' and the length is less than 10000.

    第一行包含一个整数N(1 <= N <= 100)指定数据组数。接下来的N行含有N的字符串。每个字符串只含有'A'-'Z'并且长度小于10000。

    Output

    For each test case, output the encoded string in a line.

    对于每组测试数据,用一行输出加密字符串。

    Sample Input

    2

    ABC

    ABBCCC

    Sample Output

    ABC

    A2B3C

    分析

    从第二个字符开始,判断它与前面是否相同。维护变量k,初始为1,如果相同k++,如果不相同则按规定输出,且k设为1。但需要注意,到了结尾还需要再次输出。

    代码

    Language: C

    #include <stdio.h>
    #include <string.h>
    int main()
    {
        int n;
        char s[10000];
        scanf("%d", &n);
        while (n--)
        {
            scanf("%s", s);
            int l = strlen(s);
            int k = 1;
            for (int i = 1; i < l; i++)
                if (s[i] == s[i - 1])
                    k++;
                else
                {
                    if (k > 1)
                        printf("%d", k);
                    putchar(s[i - 1]);
                    k = 1;
                }
            if (k > 1)
                printf("%d", k);
            putchar(s[l - 1]);
            putchar('
    ');
        }
        return 0;
    }
  • 相关阅读:
    HDU 1025:Constructing Roads In JGShining's Kingdom(LIS+二分优化)
    HDU 3938:Portal(并查集+离线处理)
    HDU 1811:Rank of Tetris(并查集+拓扑排序)
    HDU 1074:Doing Homework(状压DP)
    HDU 1024:Max Sum Plus Plus(DP)
    最最最亲爱哒
    hlg-1332 买电脑 ---二分
    时间过得很快
    0514
    hlg1551Assemble--暴力求解
  • 原文地址:https://www.cnblogs.com/collectionne/p/6801606.html
Copyright © 2020-2023  润新知