From 325c5993e5d4f4a57a26cf0cf56456724b26f212 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 21 Oct 2022 22:04:47 +0530 Subject: [PATCH] Remove k-elemnts\ --- Remove k-elemnts/Solution.java | 44 ++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Remove k-elemnts/Solution.java diff --git a/Remove k-elemnts/Solution.java b/Remove k-elemnts/Solution.java new file mode 100644 index 0000000..13e8b31 --- /dev/null +++ b/Remove k-elemnts/Solution.java @@ -0,0 +1,44 @@ +class Solution { + public String removeKdigits(String num, int k) + { + if(k == num.length()) + return "0"; + + Stack stack = new Stack<>(); + + int i=0; + + while(i < num.length()) + { + char ch = num.charAt(i); + //whenever meet a digit which is less than the previous digit, discard the previous one + while(!stack.isEmpty() && stack.peek() > ch && k > 0) + { + stack.pop(); + k--; + } + stack.push(ch); + i++; + } + //for corner case like 1111 + while(k > 0) + { + stack.pop(); + k--; + } + + //constructing number from stack + + StringBuilder sb = new StringBuilder(); + + while(!stack.isEmpty()) + sb.append(stack.pop()); + + sb.reverse(); + + while(sb.charAt(0) == '0' && sb.length() > 1) + sb.deleteCharAt(0); + + return sb.toString(); + } +}