最近、面接官から次のような質問をされました。「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
正確にb
1 回、c
最大で 1 回テストします。