压缩字符串
三指针算法
iii为读取字符串指针,jjj为上一次从哪里开始度字符串,jjj指针方便查找重复的字符出现的次数:i−j+1i - j + 1i−j+1,还需要writewritewrite,在数组压缩字符
class Solution {
public:
int compress(vector<char>& chars) {
int n = chars.size();
int j = 0, left = 0;
for (int i = 0; i < n; i ++ )
{
if (i == n - 1 || chars[i] != chars[i + 1])
{
int len = i - left + 1;
chars[j ++ ] = chars[i];
if (len > 1)
{
if (len >= 10)
{
int temp = j;
while (len)
{
chars[j ++ ] = len % 10 + '0';
len /= 10;
}
reverse(&chars[temp], &chars[j]);
}
else
chars[j ++ ] = len + '0';
}
left = i + 1;
}
}
return j;
}
};
该博客讨论了一种使用三指针算法实现字符串压缩的方法。在C++中,通过维护三个指针,当遇到不相同的字符或者字符串末尾时,计算当前字符的重复次数并将其长度编码到字符串中。该算法有效地减少了存储空间,适用于处理包含重复字符的字符串。
3339

被折叠的 条评论
为什么被折叠?



