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);
}
}