检查三个布尔值中是否至少有两个为 true

2024-04-07

最近一位面试官问了我这个问题:给定三个布尔变量 a、b 和 c,如果三个中至少有两个为 true,则返回 true。

我的解决方案如下:

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

他说这个可以进一步改进,但是如何改进呢?


而不是写:

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

Write:

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 and b正好一次,并且c最多一次。

参考

  • JLS 15.25 条件运算符? : http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.25
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查三个布尔值中是否至少有两个为 true 的相关文章

随机推荐