題目:
解答:
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 }