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;
}
相关推荐
·present·6 小时前
CSAPP(lecture 4_01)
c语言·c++
java_nnnn8 小时前
LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java
java·开发语言·leetcode
lvwangshu9 小时前
P17723 [SCP-S 2026] 函数 / func 题解
题解·双指针·技巧·性质题·思维好题·推导题
本地化文档10 小时前
llvm-libc-docs-l10n
c语言·github·gitcode·sphinx·llvm·crowdin
文丑颜不良啊11 小时前
LeetCode276~300题目解析
java·leetcode
Felven11 小时前
B. Collecting Game
c语言
Felven11 小时前
C. Removing Smallest Multiples
c语言·开发语言
水饺编程13 小时前
第2章:Linux 基础,重启命令
linux·c语言·汇编
傅科摆 _ py13 小时前
链表力扣复习
数据结构·leetcode·链表
inrichtt14 小时前
第十一课时:串口中断接收与回调函数实战解析
c语言·数据结构·stm32·单片机·嵌入式硬件