一道面试题:布尔变量

FROM:酷壳

下面这篇文章是从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)按照字面

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

4)把Bool当成0和1

a&b | b&c | c&a
a + b + c <= 2

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

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

return howManyBooleansAreTrue >= 2;

欢迎你留下你的想法。 

时间: 2024-09-17 03:29:56

一道面试题:布尔变量的相关文章

初始化顺序-今年阿里巴巴的一道笔试题

问题描述 今年阿里巴巴的一道笔试题 public class Test1 { public static int k = 0; public static Test1 t1 = new Test1("t1"); public static Test1 t2 = new Test1("t2"); public static int i = print("i"); public static int n = 99; public int j = pr

mysql一道面试题

mysql> #一道面试题 mysql> #把一张表num 的值[20-30]之间的数全改为20 mysql> #并且把[30-40]之间的数全改为30 mysql> create table mianshi ( -> num int -> ); Query OK, 0 rows affected (1.94 sec) mysql> show tables; +----------------+ | Tables_in_test | +--------------

一道面试题(关于千万量级数据结构排序)

问题描述 一道面试题(关于千万量级数据结构排序) 题目: 已知文件中存有全国英语六级历年来的成绩(千万级别,考生分数都是正整数,最高710分),每一行都是一个人的姓名.考号和成绩,请你对考生的成绩从高到低进行排序,输出到另一个文件中. 格式 如下: 李四,201008823,678: 张三,201007432,356: 王五,201322233,464: 排序后: 李四,201008823,678: 王五,201322233,464: 王五,201322233,464: 要求:使空间复杂度和时间

语言 面试题-一道面试题,不是很清楚这个例子怎么解答,求大神帮助.

问题描述 一道面试题,不是很清楚这个例子怎么解答,求大神帮助. 提问是 这段代码有什么问题, 有什么解决思路.(我其实连问题都没看出来,代码可以编译) // Memory-mapped peripheral#define STATUS_REG_ADDR 0x12345678 // 32-bit status register#define DATA_REG_ADDR 0x1234567C // 32-bit data register // Status register bits#define

结构体定义-如何定义满足以下的Node与List结构体,今天参加斐讯的一道笔试题。

问题描述 如何定义满足以下的Node与List结构体,今天参加斐讯的一道笔试题. Node包含50个字符.

从一道面试题说去

    有一道面试题: 给定n个整型数,怎样让这n个数的使用空间最小.      ok,我们都知道在32位的机器下,int类型的数占4个字节,因此n个数总的使用空间应该是4n.(64位不做解释)那我们怎么样才能使得n个数字的使用空间最小呢?     一. 我们先来看一个例子           假设现在有3个数,1,2,3.           我们都知道数字最后都是以二进制的方式存储的,我们可以表示出1,2,3的二进制           1: 0000 0000 0000 0000 0000

javascript-JS中用alert()输出布尔变量的值

问题描述 JS中用alert()输出布尔变量的值 如题,怎么做到?var ischeck = false;怎么输出ischeck的值? 解决方案 直接alert就行了,如果没有执行alert说明你前面的代码有错误或者整个script块错误导致你的函数没有生成 自己开发工具看报什么错误.. 解决方案二: 直接alert(ischeck)不行吗? 解决方案三: 创建一个input text 标签,append添加到boy中 解决方案四: <script> var ischeck = false;

《Wireshark网络分析就这么简单》—从一道面试题开始说起

从一道面试题开始说起Wireshark网络分析就这么简单从一道面试题开始说起我每次当面试官,都要伪装成无所不知的大牛. 这当然是无奈的选择--现在每封简历都那么耀眼,不装一下简直镇不住场面.比如尚未毕业的本科生,早就拿下CCIE认证:留欧两年的海归,已然精通英.法.德三门外语:最厉害的一位应聘者,研究生阶段就在国际上首次提出了计算机和生物学的跨界理论--可怜我这个老实人在一开场还能装装,到了技术环节就忍不住提问基础知识,一下子把气氛从学术殿堂拉到建筑工地.不过就是这些最基础的问题,却常常把简历精

《大咖讲Wireshark网络分析》—从一道面试题开始说起

从一道面试题开始说起大咖讲Wireshark网络分析我每次当面试官,都要伪装成无所不知的大牛. 这当然是无奈的选择--现在每封简历都那么耀眼,不装一下简直镇不住场面.比如尚未毕业的本科生,早就拿下CCIE认证:留欧两年的海归,已然精通英.法.德三门外语:最厉害的一位应聘者,研究生阶段就在国际上首次提出了计算机和生物学的跨界理论--可怜我这个老实人在一开场还能装装,到了技术环节就忍不住提问基础知识,一下子把气氛从学术殿堂拉到建筑工地.不过就是这些最基础的问题,却常常把简历精英们难住.本文要介绍的便