题目描述:
对字符串进行RLE压缩,将相邻的相同字符,用计数值和字符值来代替。例如:aaabccccccddeee,则可用3a1b6c2d3e来代替。
输入描述:
输入为a-z,A-Z的字符串,且字符串不为空,如aaabccccccddeee
输出描述:
压缩后的字符串,如3a1b6c2d3e
思路:
- 创建一个变量,用来计数
- 使用指针,每次对比字符串的前后两个字符
- 一样的话,计数+1,指针后移;不一样则打印,计数归1,指针后移
代码如下:
#include <iostream>
using namespace std;
void Compress(char *str) {
int count = 1;
while (*str) {
if (*str == *(str + 1)) {
++count;
str++;
}
else {
cout << count << *str;
count = 1;
str++;
}
}
}
int main() {
char array[1000] = { 0 };
cout << "请输入您要压缩的字符串:";
cin >> array;
Compress(array);
return 0;
}
代码生成图: