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

相关推荐
Mr_Zzr10 分钟前
探讨如何在AS上构建webrtc(3)分享WebRTC-CMakeBuild轻量化工程
学习·webrtc
廿二松柏木29 分钟前
三级嵌入式学习ing 考点25、26
单片机·嵌入式硬件·学习
solomonzw1 小时前
linux学习(十三)(shell编程(文字,变量,循环,条件,调试))
linux·运维·学习
巧克力力克巧!1 小时前
uni-app+vue3学习随笔
vue.js·学习·uni-app
技术干货贩卖机2 小时前
0基础 | 看懂原理图Datasheet 系列1
笔记·stm32·单片机·嵌入式硬件·学习
陈无左耳、2 小时前
HarmonyOS学习第18天:多媒体功能全解析
学习·华为·harmonyos
晴空对晚照2 小时前
[动手学习深度学习]13.丢弃法 Dropout
人工智能·深度学习·学习
汤姆和佩琦3 小时前
LLMs基础学习(一)概念、模型分类、主流开源框架介绍以及模型的预训练任务
人工智能·学习·算法·分类·数据挖掘
宇寒风暖3 小时前
HTML 表单详解
前端·笔记·学习·html