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;
}
相关推荐
名誉寒冰3 分钟前
GDB 调试与 Core Dump(段错误)排查指南(Linux/C/C++)
linux·c语言·c++
GoWjw2 小时前
在C&C++中结构体的惯用方法
c语言·开发语言·c++
fufu03112 小时前
Linux环境下的C语言编程(四十三)
linux·c语言·算法
风筝在晴天搁浅3 小时前
hot100 239.滑动窗口最大值
数据结构·算法·leetcode
LYFlied3 小时前
【算法解题模板】-解二叉树相关算法题的技巧
前端·数据结构·算法·leetcode
Darken035 小时前
基于C语言的学习---if语句
c语言·学习·if语句
菜鸟233号5 小时前
力扣78 子集 java实现
java·数据结构·算法·leetcode
json{shen:"jing"}6 小时前
2-C语言的运算符和表达式
c语言·开发语言
月明长歌6 小时前
【码道初阶】【Leetcode94&144&145】二叉树的前中后序遍历(非递归版):显式调用栈的优雅实现
java·数据结构·windows·算法·leetcode·二叉树
DanyHope7 小时前
《LeetCode 49. 字母异位词分组:哈希表 + 排序 全解析》
算法·leetcode·哈希算法·散列表