面試題:布林變數
下面這篇文章是從StackOverflow來的。LZ面試的時候遇到了一道面試題:“如果有三個Bool型變數,請寫出一程式得知其中有2個以上變數的值是true”,於是LZ做了下面的這樣的程式:
1 boolean atLeastTwo(boolean a, boolean b, boolean c) {
2 if ((a && b) || (b && c) || (a && c)) {
3 return true;
4 } else {
5 return false;
6 }
7 }
面試官接著問到,請對你的這個程式改進一下,但LZ不知道怎麼改進,於是上StackOverflow上問了一下,下面是StackOverflow上的眾網友的回答。再往下看的時候,希望你自己能先想一想怎麼改進。
有人說,如果你有下面這樣的程式碼?
1 if (someExpression) {
2 return true;
3 } else {
4 return false;
5 }
你應該改成:
1 return someExpression;
所以,LZ的程式碼應該寫成:
1 return ((a && b) || (b && c) || (a && c));
當然,解法不單單隻有一種,還有下面的這些解決:
1)使用卡諾圖
1 return a ? (b || c) : (b && c);
2)使用異或
1 return a ^ b ? c : a
3)按照字面
1 (a?1:0)+(b?1:0)+(c?1:0) >= 2
1 a&&b || b&&c || a&&c
4)把Bool當成0和1
1 a&b | b&c | c&a
1 a + b + c <= 2
5)如果bool不能當成0和1,則:
1int howManyBooleansAreTrue =
2(a ? 1 : 0)
3+ (b ? 1 : 0)
4 + (c ? 1 : 0);
5
6 return howManyBooleansAreTrue >= 2;
歡迎你留下你的想法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31365439/viewspace-2679795/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 面試題(一)北京巨集林面試題
- 離散數學(格與布林代數)
- 布林帶策略
- 面試題-JavaScript交換兩個變數的方法面試題JavaScript變數
- TypeScript 布林型別TypeScript型別
- 【冰山白皮書】JS中的布林 數字 字串JS字串
- 標準變成使謂詞(布林函式)返回true函式
- 變態的面試題目面試題
- C#快速入門教程(10)——布林型別與布林運算C#型別
- ES-布林查詢
- Boost 矩形布林運算
- HTML 布林屬性值HTML
- Python - 基本資料型別_Number 數字、bool 布林、complex 複數Python資料型別
- 變數提升的考試題變數
- 從布林值到異常
- 你好,布林瑪!(Blazor元件庫)Blazor元件
- MySQL手注之盲注(布林)MySql
- java布林型別易錯點Java型別
- 《Pandas Cookbook》第05章 布林索引索引
- 條件和布林操作符
- 為計算機發明奠定基礎的《思想法則》出版150週年:什麼是布林邏輯/布林代數? - maa計算機
- python中if條件語句對於布林值和非布林值的判斷結果Python
- LeetCode 面試題16.07[最大數值]LeetCode面試題
- ?【程式中的數學】利用德摩根定律簡化布林運算
- HTML最新面試題(筆試面試題)HTML面試題筆試
- 元組、布林、集合的內建方法
- 聊聊快取布林值踩到的坑快取
- C 語言之布林型別介紹型別
- 5.注意Dart中的布林值Dart
- vnpy,BollChannel布林線軌道策略分析
- 面試題:面試經面試題
- 面試題 17.04. 消失的數字面試題
- 面試必刷:最有用的Mysql面試題,面試了無數公司總結的MySql面試題
- 布林線的用法圖解:如何運用布林線逃頂和抄底圖解
- 「面試題」20+Vue面試題整理面試題Vue
- 布林盲注web入門190-194Web
- Pandas知識點彙總(2)——布林索引索引
- 抄底技巧:布林線下軌抄底的技巧