C语言 | Leetcode C语言题解之第443题压缩字符串
题目:
题解:
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;
}
原文地址:https://blog.csdn.net/m0_59237910/article/details/142625538
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!