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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章