面試題:布爾變數
點擊上方「
Python開發
」,選擇「置頂公眾號」
關鍵時刻,第一時間送達!
下面這篇文章是從StackOverflow來的。LZ面試的時候遇到了一道面試題:「如果有三個Bool型變數,請寫出一程序得知其中有2個以上變數的值是true」,於是LZ做了下面的這樣的程序:
boolean atLeastTwo ( boolean boolean boolean
if
((a && b) || (b && c) || (a && c)) {return
true
;
}
else
{return
false
;}
}
面試官接著問到,請對你的這個程序改進一下,但LZ不知道怎麼改進,於是上StackOverflow上問了一下,下面是StackOverflow上的眾網友的回答。再往下看的時候,希望你自己能先想一想怎麼改進。
有人說,如果你有下面這樣的代碼?
if return true else
}
{
return
false
;}
你應該改成:
return
所以,LZ的代碼應該寫成:
return
當然,解法不單單只有一種,還有下面的這些解決:
1)使用
卡諾圖
return
2)使用異或
return
3)按照字面
1 0 1 0 1 0 2(a?
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 1 0 1 0 1 0
(a ?
+ (b ?
+ (c ?
return
howManyBooleansAreTrue >=
2
;歡迎你留下你的想法。
來自:陳皓
https://coolshell.cn/articles/2514.html
Python開發整理髮布,轉載請聯繫作者獲得授權
【點擊成為程序員大咖】
TAG:Python開發 |