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;
}
相关推荐
zycoder.21 分钟前
力扣面试经典150题day3第五题(lc69),第六题(lc189)
算法·leetcode·面试
小此方41 分钟前
C语言自定义变量类型结构体理论:从初见到精通(上)
c语言·开发语言
胖咕噜的稞达鸭3 小时前
C++中的父继子承:继承方式实现栈及同名隐藏和函数重载的本质区别, 派生类的4个默认成员函数
java·c语言·开发语言·数据结构·c++·redis·算法
一碗绿豆汤3 小时前
c语言-运算符
c语言
一碗绿豆汤4 小时前
C语言--核心语法
c语言
七饭4 小时前
C语言数据结构-排序
c语言·数据结构·排序算法
_dindong7 小时前
基础算法:滑动窗口
数据结构·学习·算法·leetcode·力扣
老侯(Old monkey)8 小时前
C语言:冒泡法排序
c语言·函数调用·指针·冒泡法排序
nju_spy11 小时前
力扣每日一题(二)任务安排问题 + 区间变换问题 + 排列组合数学推式子
算法·leetcode·二分查找·贪心·排列组合·容斥原理·最大堆
代码对我眨眼睛12 小时前
226. 翻转二叉树 LeetCode 热题 HOT 100
算法·leetcode·职场和发展