From 25910bc2bdabf84522d68caa889284e8d79dcabd Mon Sep 17 00:00:00 2001 From: chayan das <110921638+Chayandas07@users.noreply.github.com> Date: Thu, 11 Apr 2024 15:17:08 +0530 Subject: [PATCH] Create 402. Remove K Digits --- 402. Remove K Digits | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 402. Remove K Digits 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; + } +};