1class Solution {2public String removeKdigits(String num, int k) {3int n = num.length();4if (n == k) {5return "0";6}7Deque<Character> dq = new ArrayDeque<>();8for (char ch : num.toCharArray()) {9while (!dq.isEmpty() && k > 0 && dq.peekLast() > ch) {10dq.pollLast();11k--;12}13dq.addLast(ch);14}15StringBuilder sb = new StringBuilder();16while (!dq.isEmpty() && dq.peekFirst() == '0') {17dq.pollFirst();18}19while (!dq.isEmpty()) {20sb.append(dq.pollFirst());21}22if (k >= sb.length()) {23return "0";24}25return sb.length() == 0 ? "0" : sb.toString().substring(0, sb.length() - k);26}27}