C语言 | Leetcode C语言题解之第402题移掉K位数字

题目:

题解:

cpp 复制代码
char* removeKdigits(char* num, int k) {
    int n = strlen(num), top = 0;
    char* stk = malloc(sizeof(char) * (n + 1));
    for (int i = 0; i < n; i++) {
        while (top > 0 && stk[top] > num[i] && k) {
            top--, k--;
        }
        stk[++top] = num[i];
    }
    top -= k;

    char* ans = malloc(sizeof(char) * (n + 1));
    int ansSize = 0;
    bool isLeadingZero = true;
    for (int i = 1; i <= top; i++) {
        if (isLeadingZero && stk[i] == '0') {
            continue;
        }
        isLeadingZero = false;
        ans[ansSize++] = stk[i];
    }
    if (ansSize == 0) {
        ans[0] = '0', ans[1] = 0;
    } else {
        ans[ansSize] = 0;
    }
    return ans;
}
相关推荐
王璐WL5 小时前
【C语言入门级教学】函数的概念2
c语言·数据结构·算法
运筹vivo@7 小时前
2657. 找到两个数组的前缀公共数组 | 难度:中等
算法·leetcode·职场和发展·哈希表
古城小栈7 小时前
Rust 调用 C 语言库 实战指南(企业级)
c语言·开发语言·rust
枕星而眠8 小时前
Linux 线程:原理、属性、实战与面试避坑
linux·运维·c语言·面试
码完就睡9 小时前
C语言——动态内存
c语言·开发语言
arronKler12 小时前
MySQL命令行导出数据库
c语言·数据库·mysql
叶小鸡13 小时前
小鸡玩算法-力扣HOT100-动态规划(下)
算法·leetcode·动态规划
我命由我1234514 小时前
Android Framework P3 - MediaServer 进程、认识 ServiceManager 进程
android·c语言·开发语言·c++·visualstudio·visual studio·android runtime
三易串口屏14 小时前
实验1 实时显示单片机的参数(整数、小数、中文 系统指令方式)
c语言·单片机·嵌入式硬件·mongodb·串口屏·三易串口屏
聆风吟º15 小时前
深入理解C语言 isupper 函数详解:判断字符是否为大写字母
c语言·开发语言·库函数·字符处理·isupper