diff --git a/402. Remove K Digits b/402. Remove K Digits new file mode 100644 index 0000000..276dc6d --- /dev/null +++ b/402. Remove K Digits @@ -0,0 +1,29 @@ +class Solution { + public: + string removeKdigits(string num, int k) { + if (num.length() == k) + return "0"; + + string ans; + vector stack; + + for (int i = 0; i < num.length(); ++i) { + while (k > 0 && !stack.empty() && stack.back() > num[i]) { + stack.pop_back(); + --k; + } + stack.push_back(num[i]); + } + + while (k-- > 0) + stack.pop_back(); + + for (const char c : stack) { + if (c == '0' && ans.empty()) + continue; + ans += c; + } + + return ans.empty() ? "0" : ans; + } +};