1) { -6ren">
gpt4 book ai didi

java - 从 int 中删除的方法

转载 作者:行者123 更新时间:2023-11-30 03:12:41 24 4
gpt4 key购买 nike

这是我迄今为止所能想到的。

  public static int evens(int n)
{
String num = "" + n;
if (n>1) {

if (n%2 == 0) {
return n + evens(n%10);
}
else {
int len = num.length();
num = num.substring(0, len-1);
n = Integer.parseInt(num);
return n + evens(n%10);
}
}
else {
return n;
}
}

我的逻辑是使整数成为字符串,然后每次除以 10 以使下一个数字(从右到左)位于个位(并且使用整数,我认为应该删除前一个数字)。然后我尝试使用 %2 来查找余数,如果它不是 ==0,则个位中的数字是奇数,并以某种方式从字符串中消除该数字(通过获取长度然后从 0 中获取子字符串)到 len-1)。我认为我的问题可能包括逻辑,显然我的语法有问题,并且定义字符串的方法的第一行导致它通过每次递归重新定义,从而搞砸了。

最佳答案

紧凑的非字符串版本:

public static int evenDigits(int n) {
return (n&1) != 0 ? evenDigits1(n/10) : n < 10 ? n : n%10 + evenDigits(n/10)*10;
}

解释:

public static int evenDigits(int n) {
if ((n & 1) != 0) {
// Last digit is odd, so remove it. Recurse on higher digits
return evenDigits(n / 10);
}
if (n < 10) {
// Single digit number is even, so we're done
return n;
}
// Keep last digit (it is even). Recurse on higher digits
return n % 10 + evenDigits(n / 10) * 10;
}

关于java - 从 int 中删除的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33289212/

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