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

问题:

访问者最近问我这个问题:给定三个布尔变量a,b和c,如果三个中至少有两个为真,返回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;
}

写:

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);
}

它一次测试ab,最多只测试一次c

参考

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Check if at least two out of three booleans are true

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

36 + = 41