12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package _402;
- class Solution {
- public String removeKdigits(String num, int k) {
- if (k <= 0)
- return num;
- int len = num.length();
- StringBuilder res = new StringBuilder(len);
- return removeKdigitsIter(num, len - k, -1, res);
- }
- /**
- * @param left Number of the digits left
- * @param head The head index of current sub string
- * @param res Temp sb to build result
- */
- private String removeKdigitsIter(String num, int left, int head, StringBuilder res) {
- if (left <= 0)
- return res.length() == 0 ? "0" : res.toString();
- head++;
- char min = num.charAt(head);
- int tail = num.length() - left + 1;
- for (int i = head; i < tail; i++) {
- if (num.charAt(i) < min) {
- min = num.charAt(i);
- head = i;
- }
- }
- boolean notLeading0 = res.length() != 0 || min != '0';
- if (notLeading0)
- res.append(min);
- return removeKdigitsIter(num, left - 1, head, res);
- }
- private static void testRemoveKdigits(String num, int k) {
- Solution solution = new Solution();
- System.out.println(solution.removeKdigits(num, k));
- }
- public static void main(String[] args) {
- testRemoveKdigits("4325643", 0);
- }
- }
|