解题思路:
注意事项:
代码源自CSDN博主 yours_棒棒糖
参考代码:
public static void main(String[] args) { Scanner sc = new Scanner(System.in); String num = sc.next(); int k = sc.nextInt(); System.out.println(removeKDigits(num,k)); } 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<num.length();i++){ //遍历当前数字 char c = num.charAt(i); //当栈顶数字小于遍历到的当前数字时,栈顶数字出栈(相当于删除数字) while (top > 0 && stack[top -1]<c && k>0){ top = top -1; k = k -1; } //遍历到的当前数字入栈 stack[top++]= c; } //找到栈中第1个非零数字的位置,以此构建新的整数字符串 int offset = 0; while (offset<newLength && stack[offset] == '0'){ offset++; } return offset == newLength? "0" : new String(stack,offset,newLength -offset); }
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题1.6 (C++代码)浏览:891 |
不会做的浏览:873 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:522 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:519 |
A+B for Input-Output Practice (C语言代码)浏览:463 |
数字游戏 (C++代码)浏览:1180 |
简单的a+b (C语言代码)浏览:460 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:591 |
哥德巴赫曾猜测 (C语言代码)浏览:715 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:482 |