class Solution { public String removeKdigits(String num, int k) { Deque<Character> digits = new LinkedList<>(); for (int i = 0; i < num.length(); i++) { Character digit = num.charAt(i); while (!digits.isEmpty() && k > 0 && digits.peekLast() > digit) { digits.pollLast(); k--; } digits.offerLast(digit); } for (int i = 0; i < k; i++) { digits.pollLast(); } StringBuilder ans = new StringBuilder(); boolean leadingZero = true; while (!digits.isEmpty()) { Character digit = digits.pollFirst(); if (leadingZero && digit == '0') continue; leadingZero = false; ans.append(digit); } return ans.length() == 0 ? "0" : ans.toString(); }}