题目:
给定一个字符串,实现一个函数,按下述方式输出字符串:
1、如果此字符的下一个字符和此字符不一样,原样输出此字符;
2、如果此字符的下一个字符和此字符一样,先输出此字符,再输出此字符连续出现的次数(次数不大于9)。
例如,字符串ABBCCCDEDFFF,输出的结果为AB2C3DEDF3。 不用考虑溢出问题,不能使用任何I/O函数。
给定一个字符串,实现一个函数,按下述方式输出字符串:
1、如果此字符的下一个字符和此字符不一样,原样输出此字符;
2、如果此字符的下一个字符和此字符一样,先输出此字符,再输出此字符连续出现的次数(次数不大于9)。
例如,字符串ABBCCCDEDFFF,输出的结果为AB2C3DEDF3。 不用考虑溢出问题,不能使用任何I/O函数。
#include<iostream>
#include<string>
using namespace std;
std::string compressString(const char* target,int length)
{
std::string str;
int front = 0;//遍历位置标记
int rear = front + 1;//要永远指向front之后
if (length == 1)
{
return str.append(1,target[0]);
}
int counter = 1;
for (int i = 0; i < length-1; i++)
{
front = i;
rear = front + 1;
if (target[rear] != target[front])
{
str.append(1,target[front]);
}
else
{
str.append(1, target[front]);