Remove K Digits
MediumStringStackGreedyMonotonic Stack
Solution
export function removeKdigits(num: string, k: number): string {
let remain = k;
const stack: number[] = [];
for (const n of num) {
const digit = parseInt(n);
while (0 < stack.length && digit < stack[stack.length - 1] && 0 < remain) {
stack.pop();
remain -= 1;
}
if (0 < stack.length || digit !== 0) {
stack.push(digit);
}
}
const answer = remain === 0 ? stack.join('') : stack.slice(0, -remain).join('');
return answer === '' ? '0' : answer;
}