解题思路:
注意事项:
代码源自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 人评分
A+B for Input-Output Practice (C语言代码)浏览:468 |
循环入门练习6 (C语言代码)浏览:970 |
1071题解浏览:493 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:509 |
前10名 (C语言代码)浏览:727 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:481 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:699 |
1074(纳闷了,答案错误,求指教)浏览:362 |
1218题求大神帮忙看看怎么不能过浏览:698 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:445 |