leetcode 面试题 0106.字符串压缩

⭐️ 题目描述


🌟 leetcode链接:面试题 0106.字符串压缩

思路: 开辟一个新的空间(空间要大一点,因为可能压缩后的字符串比原字符串大),然后遍历原字符串统计当前字符的个数,再写入到新开辟的空间中,最后只需判断一下原字符串长度和新字符串长度决定返回谁即可。

代码:

c 复制代码
char* compressString(char* S){  
    int S_length = strlen(S);
    char * new_str = (char*)calloc(S_length * 3 , sizeof(char));
    int i = 0;
    while (S[i]) {
        int count = 1;
        int left = i;
        int right = i + 1;
        while (S[right] && S[left] == S[right]) {
            count++;
            right++;
        }

        // 写入新的字符串中
        // 注:sprintf 返回的是上次写回的字符个数
        sprintf(new_str, "%s%c%d" , new_str  , S[left] , count);
        
        i = right;
    }

    return strlen(new_str) >= S_length ? S : new_str;
}

相关推荐
序属秋秋秋2 分钟前
《C++进阶之STL》【set/map 使用介绍】
开发语言·c++·笔记·leetcode·stl·set·map
Greedy Alg25 分钟前
LeetCode 240. 搜索二维矩阵 II
算法·leetcode·职场和发展
77qqqiqi30 分钟前
学习结构体
c语言·学习
墨染点香30 分钟前
LeetCode 刷题【68. 文本左右对齐】
算法·leetcode·职场和发展
GalaxyPokemon32 分钟前
LeetCode - 202. 快乐数
算法·leetcode·职场和发展
吃着火锅x唱着歌34 分钟前
LeetCode 522.最长特殊序列2
算法·leetcode·职场和发展
肥肠可耐的西西公主1 小时前
后端(fastAPI)学习笔记(CLASS 1):扩展基础
笔记·学习·fastapi
對玛祷至昏1 小时前
算法学习路径
学习·算法·排序算法
qq_386322695 小时前
华为网路设备学习-32(BGP协议 七)路由反射器与联邦
网络·学习
萘柰奈5 小时前
Unity学习----【进阶】Addressables(二)--加载资源与打包及更新
学习·unity