看板 Soft_Job 關於我們 聯絡資訊
原文恕刪, 推文我整理了一下, 大概就是這三個版本, 我個人比較偏愛版本三, 原因是因為一個月後我比較看得懂這段程式碼的目的是啥XD 較不愛版本二的原因是result用字串串接的話, 會相依於上一個判斷的結果, 要把全部程式碼看完才能知道result是啥, 萬一條件一多, 程式碼只有難讀而已, 所以當我知道google面試官偏愛版本二時, 有點不太理解XD # 版本一 for(int i = 1; i<= n; i++){ if(i%15 == 0){ System.out.println("FizzBuzz"); continue; } if(i%3 == 0){ System.out.println("Fizz"); continue; } if(i%5 == 0){ System.out.println("Buzz"); continue; } System.out.println(i); } # 版本二 for(int i = 1; i <= n; i++){ String result = ""; if(i%3 == 0) result += "Fizz"; if(i%5 == 0) result += "Buzz"; if(result.length() > 0) System.out.println(result); else System.out.println(i); } # 版本三 for(int i = 1; i<= n; i++){ if(i%15 == 0){ System.out.println("FizzBuzz"); } else if(i%3 == 0){ System.out.println("Fizz"); } else if(i%5 == 0){ System.out.println("Buzz"); } else { System.out.println(i); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.240.88.156 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1492491228.A.BF2.html
pttworld: 沒發現版本三不一樣嗎 04/18 13:02
javatea: 有時候面試官心裡會有些偏好 不一定正確 這很正常 04/18 13:13
Lordaeron: 照題目: i=45 時, Buzz Fizz FizzBuzz 都要印 04/18 13:13
Cauchy2008: 抱歉,是我沒翻譯好...45時,印FizzBuzz就好 04/18 13:16
Cauchy2008: 剛查到Python 霸氣一行解: 04/18 13:17
Cauchy2008: return[i%3/2*'Fizz'+i%5/4*'Buzz'or`i+1`for i in ra 04/18 13:17
Cauchy2008: nge(n)] 04/18 13:17
Cauchy2008: 但int 乘 String 這招在Java就無法用了 04/18 13:18
vfgce: 呃,那種程式寫出來玩可以,但半年後你還記得這東西在幹嘛 04/18 13:33
bben900911: leetcode裡的fizzbuzz並沒有15的倍數這一項要求 04/18 13:53
bben900911: 單純的問3的倍數 5的倍數 兩者的公倍數而已喔 04/18 13:53
bben900911: 還是google問的題目有確實要求15這點? 04/18 13:53
magic704226: 這題就 leetcode的 04/18 14:38
ssccg: 今天這問題的核心不就是全條件完才知道結果是啥? 04/18 15:50
ssccg: 3的倍數印Fizz、5的倍數印Buzz,這兩個條件是獨立的 04/18 15:51
ssccg: 如果同時滿足兩個條件,自然兩個都做,只有版本二滿足這原 04/18 15:51
ssccg: 則,版本一三都是hardcode 15的倍數這個沒必要的條件 04/18 15:52
ssccg: 如果條件多7倍數印Woof,不就要再i%105、i%21、i%35、i%7? 04/18 15:55
ssccg: 但是版本二就是加一行而已 04/18 15:56
loxyz: 推 04/18 16:51
ACMANIAC: 推 樓樓上 04/18 19:09
Hevak: ssccg 大解說得好詳細@@ 04/18 19:17
lgates: 推下ssccg 誰說的對啊 04/18 19:49
Cauchy2008: 推ssccg 懂了!原來這題的point在這...leetcode 討論 04/18 21:04
Cauchy2008: 區很多都是if else的解,重點沒被突顯出來 04/18 21:04
stosto: 有一種是效率問題 有一種是維護問題 都沒人用物件導向解 04/19 02:25
lgates: 修一下我的推文..多打個 "誰",現在才看到 04/19 13:04
meteor260: 要看要做的事情邏輯本身, 若是15倍數印FizzBuzz真的是 04/19 16:20
meteor260: 因同時是三和五倍數, 則做法二, 若非則做法三 04/19 16:21
meteor260: 自作解釋的話很容易會犯下智障測驗的錯誤, 到時打掉重 04/19 16:24
meteor260: 練 04/19 16:24
meteor260: 2?2=4 中間究竟是不是加號呢 04/19 16:32
ssccg: 其實原題目應該就沒有提到15的倍數,這題最先是要考知不知 04/19 19:35
ssccg: 道用ifelse寫法要把需要&&的條件放在前面的基本邏輯 04/19 19:38
ssccg: 版本二是延伸問題了 04/19 19:38
ntddt: 推居然能用ptt熱烈討論code真是厲害 04/19 23:07
vn509942: 開心 04/19 23:42
janbarry168: 推ssccg大 04/20 00:13
cutekid: 推ssccg,除了版本二,其它的 switch case 都是 2^N 04/20 00:31
agario: 之前有看過這題的心得: https://goo.gl/WyVN7f 04/20 07:16
cha122977: 我以為鄉民通常會嗆這題有什麼好問的XD 04/20 08:52
bemyself: 這板是一堆非資工本科系的嗎... 04/20 09:37
QQaRed: 學習了... 04/20 20:39
Csongs: 正想回文,推文有人說完惹 04/21 08:51
stosto: 寫這題用神經網路也太靠杯了 04/22 17:09
truthmanman: String s = i % 15 == 0 ? "fizzbuzz" : (i % 3 == 0 05/01 00:35
truthmanman: ? "fizz" : (i % 5 == 0 ? "buzz" : "" + i)); 05/01 00:36