gpt4 book ai didi

Java Stream 计数操作,直到一个整数变为 0

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:52:43 27 4
gpt4 key购买 nike

我如何在给定整数 N 的情况下使用 Java Stream,如果 N 是奇数,则从中减去 1,如果 N 是偶数,则将其除以 2,直到 N 变为 0?

这是我使用过程式风格的工作代码:

public static int solution(int num) {
int counter = 0;
while(num != 0) {
num = (num % 2 == 0) ? num / 2 : num - 1;
counter++;
}

return counter;
}

最佳答案

您可以使用具有相同逻辑的 IntStream.iterate:

public static long solutionStream(int num) {
return IntStream.iterate(num, i -> i % 2 == 0 ? i / 2 : i -1)
.takeWhile(i -> i > 0)
.count();
}

请注意,takeWhile 仅在 Java 9+ 中可用,这里有必要结束由 iterate 产生的无限流。

关于Java Stream 计数操作,直到一个整数变为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53348612/

27 4 0