下面这篇文章是从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
相关推荐
静态变量和静态方法的意义,如何引用一个类的静态变量或者静态方法? 50.JAVA语言如何进行异常处理,关键字:thorws,throw,try,catch,finally 51.Object类(或者其子类)的finalize()方法在什么情况下被调用? 52....
对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 4、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符...
Swift的20个常问面试题整理: 什么是Swift? Swift是一种由苹果公司开发的,用于iOS、macOS、watchOS、tvOS等应用程序开发的编程语言。 Swift和Objective-C有什么区别? Swift比Objective-C更安全、更...
一,中文单项选择题(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面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...
每道题都提供参考答案,这些面试题涉及Python基础知识、Python编程、数据分析以及Python函数库等多个方面。 挑选了几个简单的如下,感兴趣的可以下载试试: Q32、什么是Python中的文档Docstrings? Docstrings实际...
B) Test类的对象t可以直接访问month变量,但是不能直接访问day变量,因为day为私有变量,只有类内可以访问。 C) 该程序能通过编译并运行,但是如果想得到输出“I am print in Test”的结果,需要在横线处填写t.show...
条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型 b.逻辑操作不会产生短路.如: int a = 0; int b = 0; if( (a = 3) > 0 || (b = 3) > 0 ) //操后a =3,b=0. if( (a = 3) > ...
python入门到高级全栈工程师培训视频学习资料;本资料仅用于学习,请查看后24小时之内删除。 【课程内容】 第1章 01 计算机发展史 ...15 再插两道JavaScript面试题 16 Model操作之select_related以及...
--与66题的写法是一样的,但是不推荐使用using : 假设条件太多 --------------------------------------/非等值连接------------------------------------------/ 68、select ename,grade from emp e join ...