題目:

解答:
int compress(char* chars, int charsSize)
{
int cc = 0;
int len = 0;
char ch = 0;
char *r = NULL;
char buf[32] = { 0 };
if (charsSize == 1) {
return 1;
}
r = malloc(2000 * 2);
r[0] = 0;
len = 1;
ch = chars[0];
for (cc = 1; cc < charsSize; cc++) {
if (ch == (char)chars[cc]) {
len += 1;
}
else {
sprintf(buf, (len == 1) ? "%c" : "%c%d", ch, len);
strcat(r, buf);
len = 1;
ch = chars[cc];
}
}
sprintf(buf, (len == 1) ? "%c" : "%c%d", ch, len);
strcat(r, buf);
#if 1
len = strlen(r);
for (cc = 0; cc < len; cc++) {
chars[cc] = r[cc];
}
return len;
#else
strcpy(chars, r);
return strlen(chars);
#endif
}