下面这篇文章是从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
相关推荐
变量:在 Python 中,变量是指向对象的引用。Python 中有多种数据类型,包括整型、浮点型、字符串型、列表、元组、字典等。 数据类型:Python 中的数据类型可以分为两类:基本类型和复杂类型。基本类型包括整型、...
本文将基于标题“Java面试题和练习题”以及描述中提到的内容,深入探讨Java相关的面试题和练习题,旨在帮助求职者或希望提升技能的开发者巩固知识,准备面试。 一、Java基础 1. Java的数据类型:了解Java的八种...
#### 面试题1:变量的声明与定义的区别 在C++和C语言中,变量的声明与定义有着本质的区别。**定义**不仅告诉编译器变量的类型和名称,还会为该变量分配内存空间。这意味着,一个变量只能在程序中被定义一次,通常在...
在IT领域,面试题往往能够反映出公司的技术要求和标准,特别是像法国布尔这样的知名公司。以下是对这些面试题的详细解答: 1. 当类A中的一个成员没有定义访问修饰符(public/private/protected)时,以下哪个方法...
【上海阿尔发信息技术公司面试题】是一套针对Java程序员的面试题目,旨在考察应聘者的编程基础、Web开发技能以及数据库操作能力。以下是对各题目的详细解析: 第一题:ASP(Active Server Pages)中的VBScript数据...
#### 面试题1:变量的声明和定义有什么区别? 在C++中,变量的**声明**和**定义**有着明确的区别: - **定义**: 指为变量分配内存空间的过程,通常伴随着初始化。一个变量只能在一个地方被定义,否则会导致重复...
- 布尔变量b在声明时未初始化,其值是不确定的。在Java中,布尔类型变量默认值是false,所以输出结果应该是false。 - 因此,程序段的输出结果是B(false)。 5. Activity生命周期函数保存数据: - 在Activity生命...
1. **基础语法**:理解基本的数据类型(如整型、浮点型、字符型和布尔型),变量的声明与使用,以及运算符的优先级。同时,要熟悉流程控制语句,如if-else、switch-case、for、while等。 2. **类与对象**:掌握面向...
### 知识点二:布尔型、整型、浮点型和指针变量与零值比较的if语句 **概念解析**: - **布尔型**:比较是否等于`false`或`true`。 - **整型**:通常比较是否等于0。 - **浮点型**:由于浮点运算误差,建议使用一个...
- `print_r`:用于调试,以易读的形式打印变量,尤其适用于数组和对象,返回布尔值,可用于判断是否成功输出。 面试题五:模板引擎 Smarty、PHPLib和SmartTemplate是常见的PHP模板引擎,它们将业务逻辑与视图层分离...
Python作为一门广泛应用于数据分析、机器学习、Web开发和人工智能的编程语言,其面试题涵盖了从基础知识到高级特性的方方面面。以下是一些根据标题和描述所提取的重要知识点: 1. **Python基础**: - 变量与数据...
... - PHP语法:理解变量声明、数据类型(字符串、整型、浮点型、布尔型、数组、对象等)、...以上是基于"PHP mysql 面试题集锦"的主题,涵盖的常见知识点。理解和掌握这些内容将有助于应对PHP和MySQL相关的面试挑战。
【PHP面试题】是针对普通PHP程序员的笔试与面试准备资料,旨在测试和提升候选人在PHP编程语言、Web开发以及相关技术领域的知识水平。以下是一些可能出现在面试中的关键知识点,涵盖基础到进阶,包括但不限于: 1. *...
Java OOP 面试题知识点总结 一、软件架构 * B/S 架构:浏览器/服务器程序 * C/S 架构:客户端/服务器,桌面应用程序 二、Java 开发平台 * JAVA SE:主要用在客户端开发 * JAVA EE:主要用在 web 应用程序开发 * ...
本文将围绕“程序员笔试面试题汇总 C语言”这一主题,深入探讨C语言的相关知识点,以帮助准备嵌入式工程师职位的应聘者进行有效的复习。 一、C语言基础 1. 数据类型:C语言提供了多种数据类型,包括整型(int, ...
2018年的Python面试题反映了当时Python在各种领域的广泛应用,包括Web开发、数据分析、机器学习等。以下将对一些常见的Python面试知识点进行详细解析: 1. **基础语法**: - 变量赋值:Python中变量无需声明类型,...
### JAVA面试题详解 #### 第一题:final、finally、finalize的区别 - **final**:在Java中,`final`关键字具有多种用途。当应用于类时,它表示该类不能被继承;应用于方法时,则表明该方法不能被重写;而应用于...
Java 面试题大全 Java 是一种广泛使用的编程语言,本文总结了 Java 面试中常见的知识点,涵盖了 Java 基础、字符串操作、数据类型、运算符、抽象类等方面的知识。 Java 基础 1. JDK 和 JRE 的区别:JDK(Java ...
在面试准备过程中,了解和掌握一些常见的Python面试题对于求职者来说至关重要。以下将详细解释上述文件中提到的Python知识点。 1. 利用Python的内置函数sum()可以非常简便地计算序列的总和。例如一行代码`sum(range...