1123.Encoding SDNUOJ 1123

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 <iostream>
#include <string>
using namespace std;

int main()
{
    int n;
    while(cin >> n)
    {
        while(n--)
        {
            string s;
            cin >> s;
            while(s.length())
            {
                int temp = s.find_first_not_of(s[0]);
                if(temp == -1)
                {
                    if(s.length() == 1)
                        cout << s << '\n';
                    else
                        cout << s.length() << s[0] << '\n';
                    break;
                }
                if(temp == 1)
                {
                    cout << s[0];
                    s.erase(s.begin());
                }
                else
                {
                    cout << temp << s[0];
                    s.erase(s.begin(), s.begin() + temp);
                }
            }
        }
    }
    return 0;
}

全部评论

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务