摘要:看了一些答案使用了多個這里給出幾種方案給大家參考下建立將所對應的字符串分別映射,這樣一個即可對進行優化,只映射,這里需要一點數學技巧,大家看代碼就理解了利用的截斷功能暫時想到這些,歡迎指正
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?
看了一些答案使用了多個if,這里給出幾種方案給大家參考下
1、建立HashMap,將3,6,9,12,5,10,0(i%15==0)所對應的字符串分別映射,這樣一個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、對1進行優化,只映射3,5,8,這里需要一點數學技巧,大家看代碼就理解了
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、利用&&的截斷功能
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; }
暫時想到這些,歡迎指正
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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 ...
摘要:計算階乘中尾部零的個數描述計算出階乘中尾部零的個數樣例,故返回分析對數字做質數分解,例如,可以知道能夠在尾部產生零的只有質數和質數的乘積由于是階乘,質數的個數明顯大于質數的個數特別需要注意的是,類似,數字里面是有的指數的因而,總的個數應當是 1.計算階乘中尾部零的個數 描述: 計算出n階乘中尾部零的個數 樣例: 11! = 39916800,故返回2 分析 對數字做質數分解,例如2...
摘要:題目鏈接題目分析這個題目也很簡單。從逐個輸出到給定數組,但逢輸出,逢輸出,逢輸出。思路沒什么好說的了。用整除判斷能否被分別整除或同時整除。然后替換要輸出的內容即可。最終代碼若覺得本文章對你有用,歡迎用愛發電資助。 412. Fizz Buzz 題目鏈接 412. Fizz Buzz 題目分析 這個題目也很簡單。 從1逐個輸出到給定數組,但逢3輸出Fizz,逢5輸出Buzz,逢15輸出F...
摘要:匹配器是一個一元函數,入參為,返回值為,是一種典型的謂詞。執行器也是一個一元函數,入參為,返回值為,其本質就是定制常見的操作,將定義域映射到值域。為一個工廠類,用于生產各種。其中,使用了的。 Functional programming leads to deep insights into the nature of computation. -- Martin Odersky 形式...
摘要:首先得介紹下短路原理,一共就以下四點非常關鍵只要前面為不管后面是還是,都返回后面的值。正常思路也是最簡單的思路就是條件語句,如下結束但是代碼看起來非常的多,雖然方便閱讀,但是不方便裝逼啊使用短路原理大大精簡條件語句代碼,如下怎么樣,就一行把 首先得介紹下短路原理,一共就以下四點(非常關鍵): 1、只要||前面為false,不管||后面是true還是false,都返回||后面的值。 2、...
閱讀 727·2023-04-25 20:32
閱讀 2282·2021-11-24 10:27
閱讀 4528·2021-09-29 09:47
閱讀 2248·2021-09-28 09:36
閱讀 3643·2021-09-22 15:27
閱讀 2763·2019-08-30 15:54
閱讀 379·2019-08-30 11:06
閱讀 1277·2019-08-30 10:58