// 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
// 压缩规则:
// 1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。
// 2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。
//
#include <iostream>
#include <cassert>
using namespace std;
void stringZip(const char *pInputStr, long InputLen, char *pOutputStr)
{
assert(pInputStr != NULL);
const char *p = pInputStr ;
int *q = new int[InputLen +1] ;
int i = 0;
int count = 1;
pOutputStr[i++] = *p ;
p++ ;
while (*p != '\0')
{
if ( *p == pOutputStr[i-1] )
{
count++;
p++;
}
else
{
pOutputStr[i++] = '0' + count%10;
pOutputStr[i++] = *p ;
count = 1;
p++;
}
}
pOutputStr[i++] = '0' + count%10;
pOutputStr[i] = '\0';
}
int main( )
{
char input[] = "cdeca" ;
char *output = new char[strlen(input)+1] ;
stringZip(input, strlen(input), output );
cout << output <<endl;
//delete output ;
return 0;
}
字符串压缩程序
最新推荐文章于 2024-07-18 07:17:23 发布