public static String removeKDigits(String num,int k) {
//新整数的最终长度=原长度 - k
int newLength=num.length()-k;
//创建一个栈,用于接收所有数字
char[] stack=new char[num.length()];
//栈顶指针
int top=0;
for (int i = 0; i < stack.length; i++) {
char c=num.charAt(i);
while(top > 0 && stack[top-1] > c && k > 0) {
top--;
k--;
}
stack[top++]=c;
}
//找到栈中第一个非0整数的位置,以此来构建整数字符串
int offset=0;
while(offset < newLength && stack[offset] == '0') {
offset++;
}
return offset==newLength ? "0" : new String(stack,offset,newLength - offset);
}
public static void main(String[] args) {
System.out.println(removeKDigits("1593212", 1));
System.out.println(removeKDigits("1593212", 4));
}