402. 移掉K位数字

  1. class Solution {
  2. public String removeKdigits(String num, int k) {
  3. Deque<Character> digits = new LinkedList<>();
  4. for (int i = 0; i < num.length(); i++) {
  5. Character digit = num.charAt(i);
  6. while (!digits.isEmpty() && k > 0 && digits.peekLast() > digit) {
  7. digits.pollLast();
  8. k--;
  9. }
  10. digits.offerLast(digit);
  11. }
  12. for (int i = 0; i < k; i++) {
  13. digits.pollLast();
  14. }
  15. StringBuilder ans = new StringBuilder();
  16. boolean leadingZero = true;
  17. while (!digits.isEmpty()) {
  18. Character digit = digits.pollFirst();
  19. if (leadingZero && digit == '0')
  20. continue;
  21. leadingZero = false;
  22. ans.append(digit);
  23. }
  24. return ans.length() == 0 ? "0" : ans.toString();
  25. }
  26. }