#include<iostream>
using namespace std;
void stringZip(const char*pInputStr,long llnputLen,char*pOutputStr)
{
long l=0;
for (long i=0;i<llnputLen;i++) //字符串压缩主要用到双重循环比较
{
int count=1;
for (long j=i+1;j<llnputLen;j++)
{
if (pInputStr[i]==pInputStr[j])
{
count++;
}
else
{
break;
}
}
if (count==1)
{
pOutputStr[l]=pInputStr[i];
l++;
}
else
{
pOutputStr[l]=(char)(count+'0');
l++;
pOutputStr[l]=pInputStr[i];
l++;
}
i=i+count-1;//可以减少重复的循环,如果字母重复
}
pOutputStr[l]='\0';//此处如果不用l那么输出字符串长度有问题
for (long k=0;k<strlen(pOutputStr);k++)
{
cout<<pOutputStr[k];
}
cout<<endl;
}
int main()
{
char*pInputStr="xxxyyzzbbhjzzz";
long llnputLen=strlen(pInputStr);
char*pOutputStr=new char (llnputLen);
stringZip(pInputStr,llnputLen,pOutputStr);
return 0;
}
字符串压缩C++实现
最新推荐文章于 2024-05-28 18:51:31 发布