摘要:看了一些答案使用了多個(gè)這里給出幾種方案給大家參考下建立將所對(duì)應(yīng)的字符串分別映射,這樣一個(gè)即可對(duì)進(jìn)行優(yōu)化,只映射,這里需要一點(diǎn)數(shù)學(xué)技巧,大家看代碼就理解了利用的截?cái)喙δ軙簳r(shí)想到這些,歡迎指正
9.Fizz Buzz
Given number n. Print number from 1 to n. But:
when number is divided by 3, print "fizz".
when number is divided by 5, print "buzz".
when number is divided by both 3 and 5, print "fizz buzz".
Example
If n = 15, you should return:
[
"1", "2", "fizz",
"4", "buzz", "fizz",
"7", "8", "fizz",
"buzz", "11", "fizz",
"13", "14", "fizz buzz"
]
Challenge
Can you do it with only one if statement?
看了一些答案使用了多個(gè)if,這里給出幾種方案給大家參考下
1、建立HashMap,將3,6,9,12,5,10,0(i%15==0)所對(duì)應(yīng)的字符串分別映射,這樣一個(gè)if(map.containsKey(i%15))即可
public static HashMapmap = new HashMap<>(); static{ map.put(3,"fizz"); map.put(6,"fizz"); map.put(9,"fizz"); map.put(12,"fizz"); map.put(5,"buzz"); map.put(10,"buzz"); map.put(0,"fizz buzz"); } public List fizzBuzz(int n) { List ret = new ArrayList<>(); for(int i=1;i<=n;i++){ int key = i%15; if(map.containsKey(key)){ ret.add(map.get(key)); }else{ ret.add(""+i); } } return ret; }
2、對(duì)1進(jìn)行優(yōu)化,只映射3,5,8,這里需要一點(diǎn)數(shù)學(xué)技巧,大家看代碼就理解了
public static HashMapmap = new HashMap<>(); static{ map.put(3,"fizz"); map.put(5,"buzz"); map.put(8,"fizz buzz"); } public List fizzBuzz(int n) { List ret = new ArrayList<>(); for(int i=1;i<=n;i++){ int key = f(i,3)+f(i,5); if(map.containsKey(key)){ ret.add(map.get(key)); }else{ ret.add(""+i); } } return ret; } private int f(int i,int k){ return (k-i%k)*((k-i%k)/k); }
3、利用&&的截?cái)喙δ?/p>
public ListfizzBuzz(int n) { List ret = new ArrayList<>(n); for(int i=1;i<=n;i++){ String str = null; boolean bool1 = i%3==0&&(str="fizz")!=null; boolean bool2 = i%5==0&&(str="buzz")!=null&& i%3==0&&(str="fizz buzz")!=null; if(str==null){ ret.add(""+i); }else { ret.add(str); } } return ret; }
暫時(shí)想到這些,歡迎指正
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/77101.html
Problem Given number n. Print number from 1 to n. But: when number is divided by 3, print fizz.when number is divided by 5, print buzz.when number is divided by both 3 and 5, print fizz buzz. Example ...
摘要:計(jì)算階乘中尾部零的個(gè)數(shù)描述計(jì)算出階乘中尾部零的個(gè)數(shù)樣例,故返回分析對(duì)數(shù)字做質(zhì)數(shù)分解,例如,可以知道能夠在尾部產(chǎn)生零的只有質(zhì)數(shù)和質(zhì)數(shù)的乘積由于是階乘,質(zhì)數(shù)的個(gè)數(shù)明顯大于質(zhì)數(shù)的個(gè)數(shù)特別需要注意的是,類似,數(shù)字里面是有的指數(shù)的因而,總的個(gè)數(shù)應(yīng)當(dāng)是 1.計(jì)算階乘中尾部零的個(gè)數(shù) 描述: 計(jì)算出n階乘中尾部零的個(gè)數(shù) 樣例: 11! = 39916800,故返回2 分析 對(duì)數(shù)字做質(zhì)數(shù)分解,例如2...
摘要:題目鏈接題目分析這個(gè)題目也很簡(jiǎn)單。從逐個(gè)輸出到給定數(shù)組,但逢輸出,逢輸出,逢輸出。思路沒什么好說的了。用整除判斷能否被分別整除或同時(shí)整除。然后替換要輸出的內(nèi)容即可。最終代碼若覺得本文章對(duì)你有用,歡迎用愛發(fā)電資助。 412. Fizz Buzz 題目鏈接 412. Fizz Buzz 題目分析 這個(gè)題目也很簡(jiǎn)單。 從1逐個(gè)輸出到給定數(shù)組,但逢3輸出Fizz,逢5輸出Buzz,逢15輸出F...
摘要:匹配器是一個(gè)一元函數(shù),入?yún)?,返回值為,是一種典型的謂詞。執(zhí)行器也是一個(gè)一元函數(shù),入?yún)椋祷刂禐?,其本質(zhì)就是定制常見的操作,將定義域映射到值域。為一個(gè)工廠類,用于生產(chǎn)各種。其中,使用了的。 Functional programming leads to deep insights into the nature of computation. -- Martin Odersky 形式...
摘要:首先得介紹下短路原理,一共就以下四點(diǎn)非常關(guān)鍵只要前面為不管后面是還是,都返回后面的值。正常思路也是最簡(jiǎn)單的思路就是條件語句,如下結(jié)束但是代碼看起來非常的多,雖然方便閱讀,但是不方便裝逼啊使用短路原理大大精簡(jiǎn)條件語句代碼,如下怎么樣,就一行把 首先得介紹下短路原理,一共就以下四點(diǎn)(非常關(guān)鍵): 1、只要||前面為false,不管||后面是true還是false,都返回||后面的值。 2、...
閱讀 753·2023-04-25 20:32
閱讀 2360·2021-11-24 10:27
閱讀 4564·2021-09-29 09:47
閱讀 2278·2021-09-28 09:36
閱讀 3689·2021-09-22 15:27
閱讀 2800·2019-08-30 15:54
閱讀 398·2019-08-30 11:06
閱讀 1299·2019-08-30 10:58