top1编程
← 返回题目
题解

【基础】字符串压缩

1 条题解

  • 0
    @ 2026-7-30 1:33:32

    解题思路

    用两个下标找出连续相同的一段,长度大于1时先输出长度。

    参考代码

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
        string s;
        cin >> s;
        for (int i = 0; i < (int)s.size();) {
            int j = i;
            // j向后走,找出和s[i]连续相同的一段。
            while (j < (int)s.size() && s[j] == s[i]) j++;
            // 单个字母直接输出,多个相同时先输出个数。
            if (j - i > 1) cout << j - i;
            cout << s[i];
            // 下一次从这一段的后面继续处理。
            i = j;
        }
        return 0;
    }
    

    复杂度分析

    代码只使用了简单变量、循环和字符串。设输入长度为 n,时间复杂度为 O(n^2)(若有嵌套枚举则按实际循环计算),额外空间复杂度为 O(n)。

    • 1