C语言 | Leetcode C语言题解之第443题压缩字符串

题目:

题解:

cpp 复制代码
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;
}
相关推荐
Q741_147几秒前
力扣经典模板题 前缀积 力扣 2906. 构造乘积矩阵 每日一题 哈希表 找规律 力扣 13. 罗马数字转整数 C++
算法·leetcode·前缀和·矩阵
北顾笙9807 分钟前
day05-数据结构力扣
数据结构·leetcode·哈希算法
1104.北光c°14 分钟前
Leetcode206.反转链表 迭代+递归 【hot100算法个人笔记】【java写法】
java·数据结构·笔记·算法·leetcode·链表·反转链表
聆风吟º31 分钟前
【C标准库】深入理解C语言memcpy函数:用法、原理与避坑指南
c语言·开发语言·memcpy·库函数
圣保罗的大教堂32 分钟前
leetcode 2906. 构造乘积矩阵 中等
leetcode
做怪小疯子33 分钟前
Leetcode刷题——矩阵遍历
算法·leetcode·矩阵
羊小猪~~35 分钟前
算法/力扣--链表经典题目
数据结构·后端·考研·算法·leetcode·链表·面试
C++ 老炮儿的技术栈38 分钟前
现代 C++(C++11 及以后)的移动语义
linux·c语言·开发语言·c++·github
草原上唱山歌1 小时前
如何理解C语言中的指针?
c语言·开发语言·数据结构
参.商.1 小时前
【Day47】912. 排序数组【6 种排序】
leetcode·golang·排序算法