题目:
题解:
void swap(char *a, char *b) {char t = *a;*a = *b, *b = t;
}void reverse(char *a, char *b) {while (a < b) {swap(a++, --b);}
}int compress(char *chars, int charsSize) {int write = 0, left = 0;for (int read = 0; read < charsSize; read++) {if (read == charsSize - 1 || chars[read] != chars[read + 1]) {chars[write++] = chars[read];int num = read - left + 1;if (num > 1) {int anchor = write;while (num > 0) {chars[write++] = num % 10 + '0';num /= 10;}reverse(&chars[anchor], &chars[write]);}left = read + 1;}}return write;
}