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;
}

相关推荐
霸王蟹3 分钟前
el-table组件样式如何二次修改?
前端·javascript·vue.js·笔记·学习·前端框架
因兹菜21 分钟前
[LeetCode]day4 977.有序数组的平方
数据结构·算法·leetcode
aloneboyooo25 分钟前
Android学习制作app(ESP8266-01S连接-简单制作)
学习
憨猪在度假35 分钟前
Cmake学习笔记
c++·笔记·学习
学游戏开发的1 小时前
UE学习日志#19 C++笔记#5 基础复习5 引用1
c++·笔记·学习·游戏引擎·unreal engine
__雨夜星辰__7 小时前
Linux 学习笔记__Day2
linux·服务器·笔记·学习·centos 7
学问小小谢7 小时前
第26节课:内容安全策略(CSP)—构建安全网页的防御盾
运维·服务器·前端·网络·学习·安全
charlie11451419110 小时前
从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(协议层封装)
c语言·驱动开发·单片机·学习·教程·oled
马船长11 小时前
[BSidesCF 2020]Had a bad day1
学习
黄交大彭于晏11 小时前
三端回链增加截图功能
学习