1 条题解

  • 0
    @ 2026-1-30 12:35:33
    #include<bits/stdc++.h>
    using namespace std;
    
    int main() {
        string s;
        cin >> s; // [1] 读取压缩后的字符串
        int n = s.size();
        string res = ""; // [2] 初始化解压后的结果字符串
        int i = 0;
    
        // [3] 遍历压缩字符串,逐段解压
        while (i < n) {
            // 处理数字(支持多位数)
            if (isdigit(s[i])) {
                int count = 0;
                // 收集连续的数字字符,转换为整数
                while (i < n && isdigit(s[i])) {
                    count = count * 10 + (s[i] - '0');
                    i++;
                }
                // 取出数字后的字母,重复count次并添加到结果
                char c = s[i];
                for (int j = 0; j < count; j++) {
                    res += c;
                }
                i++;
            } else {
                // 单个字母(无数字前缀),直接添加到结果
                res += s[i];
                i++;
            }
        }
    
        cout << res << endl; // [4] 输出解压后的字符串
        return 0;
    }
    
    • 1

    信息

    ID
    131
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    1
    已通过
    1
    上传者