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 小时前
LeetCode 热题 100——子串——和为 K 的子数组
算法·leetcode·职场和发展
gc_22995 小时前
学习C#调用OpenXml操作word文档的基本用法(7:Style类分析-5)
学习·word·openxml
AA陈超5 小时前
ASC学习笔记0014:手动添加一个新的属性集
c++·笔记·学习·ue5
Chunyyyen5 小时前
【第二十二周】自然语言处理的学习笔记06
笔记·学习·自然语言处理
hhcccchh6 小时前
学习vue第三天 Vue 前端项目结构的说明
前端·vue.js·学习
希望有朝一日能如愿以偿7 小时前
力扣每日一题:仅含1的子串数
算法·leetcode·职场和发展
苏小瀚7 小时前
算法---FloodFill算法和记忆化搜索算法
数据结构·算法·leetcode
重启编程之路9 小时前
python 基础学习socket -TCP编程
网络·python·学习·tcp/ip
石像鬼₧魂石9 小时前
Kali Linux 中对某(靶机)监控设备进行漏洞验证的完整流程(卧室监控学习)
linux·运维·学习