`
方XiRui
  • 浏览: 18843 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

面试题:布尔变量

阅读更多

下面这篇文章是从StackOverflow来的。LZ面试的时候遇到了一道面试题:“如果有三个Bool型变量,请写出一程序得知其中有2个以上变量的值是true”,于是LZ做了下面的这样的程序:

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

 面试官接着问到,请对你的这个程序改进一下,但LZ不知道怎么改进,于是上StackOverflow上问了一下,下面是StackOverflow上的众网友的回答。再往下看的时候,希望你自己能先想一想怎么改进。

 

有人说,如果你有下面这样的代码?

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

 你应该改成:

return someExpression;

 所以,LZ的代码应该写成:

return ((a && b) || (b && c) || (a && c));

 当然,解法不单单只有一种,还有下面的这些解决:

1)使用卡诺图

return a ? (b || c) : (b && c);

 2)使用异或

return a ^ b ? c : a;

 3)按照字面

return (a?1:0)+(b?1:0)+(c?1:0) >= 2;
// return a&&b || b&&c || a&&c;

 4)把Bool当成0和1

return a + b + c >= 2;
//return a&b | b&c | c&a;

 5)如果bool不能当成0和1,则:

int howManyBooleansAreTrue =
(a ? 1 : 0)
+ (b ? 1 : 0)
+ (c ? 1 : 0);
 
return howManyBooleansAreTrue >= 2;

 欢迎你留下你的想法。

 

 资料来源:http://coolshell.cn/articles/2514.html

分享到:
评论

相关推荐

    JAVA面试题最全集

    静态变量和静态方法的意义,如何引用一个类的静态变量或者静态方法? 50.JAVA语言如何进行异常处理,关键字:thorws,throw,try,catch,finally 51.Object类(或者其子类)的finalize()方法在什么情况下被调用? 52....

    java 面试题 总结

    对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 4、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符...

    Swift面试20问精解.docx

    Swift的20个常问面试题整理: 什么是Swift? Swift是一种由苹果公司开发的,用于iOS、macOS、watchOS、tvOS等应用程序开发的编程语言。 Swift和Objective-C有什么区别? Swift比Objective-C更安全、更...

    Python面试考题.docx

    一,中文单项选择题(30分,每个3分) Python面试考题全文共6页,当前为第1页。 Python面试考题全文共6页,当前为第1页。 1.下列哪个语句在Python中是非法的? A、x = y = z = 1 B、x = (y = z + 1) C、x, y = y, x...

    超级有影响力霸气的Java面试题大全文档

    超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...

    职来职往python程序员面试宝典基础版

    每道题都提供参考答案,这些面试题涉及Python基础知识、Python编程、数据分析以及Python函数库等多个方面。 挑选了几个简单的如下,感兴趣的可以下载试试: Q32、什么是Python中的文档Docstrings? Docstrings实际...

    java经典面试2010集锦100题(不看你后悔)

    B) Test类的对象t可以直接访问month变量,但是不能直接访问day变量,因为day为私有变量,只有类内可以访问。 C) 该程序能通过编译并运行,但是如果想得到输出“I am print in Test”的结果,需要在横线处填写t.show...

    Java学习题答案

    条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型 b.逻辑操作不会产生短路.如: int a = 0; int b = 0; if( (a = 3) > 0 || (b = 3) > 0 ) //操后a =3,b=0. if( (a = 3) > ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    python入门到高级全栈工程师培训视频学习资料;本资料仅用于学习,请查看后24小时之内删除。 【课程内容】 第1章 01 计算机发展史 ...15 再插两道JavaScript面试题 16 Model操作之select_related以及...

    精髓Oralcle讲课笔记

    --与66题的写法是一样的,但是不推荐使用using : 假设条件太多 --------------------------------------/非等值连接------------------------------------------/ 68、select ename,grade from emp e join ...

Global site tag (gtag.js) - Google Analytics