题目:将一个字符串进行压缩。
比如原始字符串为“AABBCCCDEDFFF” ; 输出字符串为:“A2B2C3DEDF3";
#include <iostream>
using namespace std;
void change_str(char *s, int len)
{
char *p = s;
char *q = p+1;
int cnt = 1;
char *tmp = (char*)malloc(len+1);
memset(tmp,'\0',len+1);
char *p_tmp = tmp;
while(*p)
{
if(*p == *q)
{
cnt++;
q++;
continue;
}
else
{
if(cnt == 1)
{
*tmp++ = *p;
p++;
q++;
}
else
{
*tmp++ = *p;
*tmp++ = cnt+'0';
p = p+cnt;
q = p+1;
}
}
cnt = 1;
}
*tmp = '\0';
strcpy(s,p_tmp);
free(p_tmp);
}
int main()
{
char str[30] = "AABBCCCDEDFFF";
change_str(str, strlen(str));
cout << str << endl;
return 0;
}
不容易。。