面試題:布林變數
下面這篇文章是從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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 布林代數入門
- php中empty()、isset()、is_null()和變數本身的布林判斷區別PHPNull變數
- 面試題(一)北京巨集林面試題
- TypeScript 布林型別TypeScript型別
- SCSS 布林 型別CSS型別
- php中empty()、isset()、is_null()和變數本身的布林判斷區別(轉)PHPNull變數
- 【冰山白皮書】JS中的布林 數字 字串JS字串
- C#快速入門教程(10)——布林型別與布林運算C#型別
- 標準變成使謂詞(布林函式)返回true函式
- HTML 布林屬性值HTML
- 你好,布林瑪!(Blazor元件庫)Blazor元件
- python-布林運算Python
- 布林線指標(轉載)指標
- 條件和布林操作符
- java布林型別易錯點Java型別
- MySQL手注之盲注(布林)MySql
- javascript 布林型別值判斷JavaScript型別
- Delphi中布林型別辨析 (轉)型別
- Python - 基本資料型別_Number 數字、bool 布林、complex 複數Python資料型別
- ?【程式中的數學】利用德摩根定律簡化布林運算
- 為計算機發明奠定基礎的《思想法則》出版150週年:什麼是布林邏輯/布林代數? - maa計算機
- C 語言之布林型別介紹型別
- 5.注意Dart中的布林值Dart
- 聊聊快取布林值踩到的坑快取
- vnpy,BollChannel布林線軌道策略分析
- PHP基礎教程-17 布林運算子PHP
- lua與c++ 中布林布bool值對應關係C++
- 面試題-JavaScript交換兩個變數的方法面試題JavaScript變數
- 布林線的用法圖解:如何運用布林線逃頂和抄底圖解
- Pandas知識點彙總(2)——布林索引索引
- javascript型別系統——布林Boolean型別JavaScript型別Boolean
- 資訊檢索與排序模型之布林模型排序模型
- C++ 數學函式、標頭檔案及布林型別詳解C++函式型別
- 從零構造一臺計算機——布林代數到邏輯電路計算機
- Python基本資料型別:布林型別(Boolean)Python資料型別Boolean
- 佩奇和布林讓Google成功的13大奇招Go
- 杜布林衝突的系統分析模型(轉載)模型
- 變態的面試題目面試題