3つのブール値のうち少なくとも2つが真であるかどうかを確認します 質問する

3つのブール値のうち少なくとも2つが真であるかどうかを確認します 質問する

最近、面接官から次のような質問をされました。「3 つのブール変数 a、b、c が与えられ、3 つのうち少なくとも 2 つが true の場合は true を返します。」

私の解決策は次のとおりです:

boolean atLeastTwo(boolean a, boolean b, boolean c) {
    if ((a && b) || (b && c) || (a && c)) {
        return true;
    }
    else{
        return false;
    }
}

彼は、これはさらに改善できると言いましたが、どのように改善できるのでしょうか?

ベストアンサー1

次のように書くのではなく:

if (someExpression) {
    return true;
} else {
    return false;
}

書く:

return someExpression;

表現自体は次のようになります。

boolean atLeastTwo(boolean a, boolean b, boolean c) {
    return a ? (b || c) : (b && c);
}

またはこれ(どちらが理解しやすいか):

boolean atLeastTwo(boolean a, boolean b, boolean c) {
    return a && (b || c) || (b && c);
}

a正確にb1 回、c最大で 1 回テストします。

参考文献

おすすめ記事