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

相关推荐
xier_ran6 小时前
【infra之路】AI 编译器学习笔记(十三):AI 编译器全景——TVM、XLA、IREE 与其他
人工智能·笔记·学习
连山齐名6 小时前
ai应用开发的学习笔记
服务器·笔记·学习
xier_ran6 小时前
【infra之路】AI 编译器学习笔记(十四):为什么要 tiling,以及矩阵计算单元的“固定“
人工智能·笔记·学习
燕落南枝7 小时前
HTML 学习:辅助标签 label 与字符实体
前端·学习·html
hackchen7 小时前
LangChain 学习第 3 课 - 输出解析器(Output Parser)
数据库·学习·langchain
Nil2087 小时前
leetcode 49字母异位分组
算法·leetcode·哈希算法
wangguanghou18 小时前
【学习成长】深入解析721学习成长模型:70-20-10法则的实践指南与避坑手册
学习
其实防守也摸鱼8 小时前
Linux文本处理命令理论学习
linux·服务器·前端·数据库·sql·学习·安全
dadaobusi8 小时前
学习: Triton
学习
一条泥憨鱼8 小时前
【计算机网络】| 从 MAC 到 NAT 的跨网段通信全链路
服务器·网络·学习·计算机网络·macos