gpt4 book ai didi

java - 递归 - Kata 挑战

转载 作者:行者123 更新时间:2023-12-02 03:41:42 25 4
gpt4 key购买 nike

挑战是删除数字末尾的零。两个数字内的零是可以的。例如:

14000 == 14 //all end zeros removed
10300 == 103 // all end zeros removed

我写这个函数来解决这个问题:

    public class NoBoring {
public static int noBoringZeros(int n) {
System.out.println(n); // testing
System.out.println(Math.abs(n % 10)); //testing
if(Math.abs(n % 10) != 0){
return n;
}
return noBoringZeros(n/10);
}
}

不幸的是,这不适用于负输入。请参阅下面的测试用例的输出:

//LD = last digit of the number
//ZR is the zero removed
Fixed Tests: noBoringZeros
1450
0 //LD
145 //ZR
5 //LD
960000
0 //LD
96000 //ZR
0 //LD
9600 //ZR
0 //LD
960 //ZR
0 //LD
96 //ZR
6 //LD
1050
0 //LD
105 //ZR
5 //LD
-1050
0 //LD
-105 //ZR
5 //LD
-105
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

我不完全明白为什么会失败?我本以为 n % 10 not = 0 的 drop out 语句会导致 n 返回,但对于负数似乎不会这样做?

最佳答案

如果您不熟悉数学函数,您可以使用字符串函数:

     int n = -22400 ; // You want -224           
String str = String.valueOf(n);

while(str.endsWith("0")){

if (str != null && str.length() > 0 && str.charAt(str.length()-1)=='0') {

str = str.substring(0, str.length()-1);
}

}

System.out.println(Integer.parseInt(str));

关于java - 递归 - Kata 挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36778317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com