跳到主要内容

3163. 压缩字符串 III

链接: 3163. 压缩字符串 III

给你一个字符串 word,请你使用以下算法进行压缩:

  • 从空字符串 comp 开始。当 word 不为空 时,执行以下操作:
    • 移除 word 的最长单字符前缀,该前缀由单一字符 c 重复多次组成,且该前缀长度 最多 为 9 。
    • 将前缀的长度和字符 c 追加到 comp 。

返回字符串 comp .

示例:

输入:word = "aaaaaaaaaaaaaabb"
输出:"9a5a2b"
C++

提示:

  • 1 <= word.length <= 2 * 10^5
  • word 仅由小写英文字母组成。

题解

模拟

class Solution {
public:
string compressedString(string s) {
string res;
int i = 0, l = 0;
for (; i < s.size(); ++i) {
if (i - l < 9 && s[l] == s[i]) {

} else {
res += to_string(i - l) + s[l];
l = i;
}
}

if (i != l) {
res += to_string(i - l) + s[l];
}

return res;
}
};
C++

0x3f: 模拟

class Solution {
public:
string compressedString(string word) {
string t;
int i0 = -1;
for (int i = 0; i < word.length(); i++) {
char c = word[i];
if (i + 1 == word.length() || c != word[i + 1]) {
int k = i - i0;
for (int j = 0; j < k / 9; j++) {
t += '9';
t += c;
}
if (k % 9) {
t += '0' + (k % 9);
t += c;
}
i0 = i;
}
}
return t;
}
};
C++
请作者喝奶茶:
Alipay IconQR Code
Alipay IconQR Code
本文遵循 CC CC 4.0 BY-SA 版权协议, 转载请标明出处
Loading Comments...