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

相关推荐
2401_8582861136 分钟前
CC52.【C++ Cont】滑动窗口
开发语言·数据结构·c++·算法·leetcode·滑动窗口
CodeCipher44 分钟前
Java后端程序员学习前端之html
学习·html5
Dr_Zobot1 小时前
SLAM学习系列——ORB-SLAM3安装(Ubuntu20-ROS/Noetic)
学习·ubuntu·软件安装
枫叶20002 小时前
OceanBase数据库-学习笔记5-用户
数据库·笔记·学习·oceanbase
玖剹2 小时前
矩阵区域和 --- 前缀和
数据结构·c++·算法·leetcode·矩阵·动态规划·1024程序员节
Nuyoah.3 小时前
《Vue3学习手记7》
javascript·vue.js·学习
freyazzr3 小时前
Leetcode刷题 | Day50_图论02_岛屿问题01_dfs两种方法+bfs一种方法
数据结构·c++·算法·leetcode·深度优先·图论·广度优先
冰茶_3 小时前
WPF之Button控件详解
大数据·学习·microsoft·c#·wpf
MrZWCui4 小时前
iOS—仿tableView自定义闹钟列表
学习·macos·ios·objective-c
且听风吟ayan4 小时前
leetcode day37 474
leetcode·c#