整数が0になるまでのJavaストリーム操作を数えます

julez:

どのように私はNの行動整数与えられたJavaのストリームを使用しないことは、あるNが奇数の場合、それから1を減算し、Nが偶数の場合Nが0になるまで、2で割り?

これは、手続き的なスタイルを使用して、私の作業コードです:

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

    return counter;
}
ernest_k:

あなたは使用することができ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();
}

ただ、ノートtakeWhile9+ Javaでのみ利用可能であり、それはによって生成さ無限ストリームを終了するには、ここで必要なのですiterate

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=196895&siteId=1