Remove K Digits

给一个字符串表示的数, 返回删除k个数字后, 最小的那个.首先需要观察一下数字的表示, 越靠左边的数字的位数越高, 那么他 这个需要用一个数组, 把字符放到数组的index中, 数组本身, 找到前k个大的数字, 然后验证是否是递减的, 如果不是, 则删除当前的. 最后还要把leading 0去掉.

public class Solution {
    public String removeKdigits(String num, int k) {
        int total = num.length() - k;
        char[] ary = num.toCharArray();
        int top = 0;
        for(int i = 0; i< num.length(); i++) {
            char c = num.charAt(i);
            while(top > 0 && ary[top-1] > c && k > 0){ // current < previous
                k--;
                top--;
            }
            ary[top++] = c;
        }
        int index = 0;
        while(index < total&&ary[index] == '0'){ // remove leading 0
            index++;
        }
        if(index == total)
            return "0";
        else
            return new String(ary, index, total-index);
    }
}