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