题解 B2123 【字符串 p 型编码】

· · 题解

简单的模拟题,简单来说就是从头到尾遍历字符串,同时累加器累加,遍历到不同的字符时将累加器和上一个字符输出,清空累加器,如此循环。

但有两个需要注意的点:

1.遍历不能0 号位开始,否则 0 号位的上一位是 -1 位,有 RE 风险同时这样无论如何 0 号位都会输出一次,WA 声一片。

2.遍历完之后要再把最后一组数据输出一遍。

没理解的看代码:

#include <bits/stdc++.h>
using namespace std;
string s;
int a = 1;//计数器,因为0号位跳过所以从1开始。 
int main()
{
    cin >> s;
    for (int i = 1; i < s.length(); i++)//不遍历0号位。 
        {
            if (s[i] != s[i - 1])
                {
                    cout << a << s[i - 1];
                    a = 0;
                }
            a++;    
        }
    cout << a << s[s.length() - 1]; //最后输出最后一组数据。 
    return 0;//AC! 
}

希望对大家有所帮助。