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;
}
相关推荐
智者知已应修善业37 分钟前
【组合数】2024-3-16
c语言·c++·经验分享·笔记·算法
量子炒饭大师2 小时前
Cyber骇客的层级霸权——【优化算法】之【排序算法】堆排序
c语言·c++·算法·排序算法
cpp_25013 小时前
P8597 [蓝桥杯 2013 省 B] 翻硬币
数据结构·c++·算法·蓝桥杯·题解
发疯幼稚鬼3 小时前
网络流问题与最小生成树
c语言·网络·数据结构·算法·拓扑学
leoufung3 小时前
LeetCode 63:Unique Paths II - 带障碍网格路径问题的完整解析与面试技巧
算法·leetcode·面试
颜子鱼3 小时前
Linux字符设备驱动
linux·c语言·驱动开发
还不秃顶的计科生4 小时前
力扣hot100第三题:最长连续序列python
python·算法·leetcode
一起养小猫4 小时前
LeetCode100天Day8-缺失数字与只出现一次的数字
java·数据结构·算法·leetcode
梭七y4 小时前
【力扣hot100题】(115)缺失的第一个正数
数据结构·算法·leetcode