题解
【基础】字符串压缩
1 条题解
-
0
解题思路
用两个下标找出连续相同的一段,长度大于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