題目:

解答:
int compress(char* chars, int charsSize)
{
int i = 0;
int cnt = 1;
char ch = chars[0];
char tmp[32] = { 0 };
char *buf = calloc(2000, 1);
for (i = 1; i < charsSize; i++) {
if (ch == (char)chars[i]) {
cnt += 1;
continue;
}
sprintf(tmp, cnt > 1 ? "%c%d" : "%c", ch, cnt, ch);
strcat(buf, tmp);
cnt = 1;
ch = chars[i];
}
sprintf(tmp, cnt > 1 ? "%c%d" : "%c", ch, cnt, ch);
strcat(buf, tmp);
cnt = strlen(buf);
memmove(chars, buf, cnt);
return cnt;
}