0%

力扣每日一题2021/8/20

题目:412. Fizz Buzz

写一个程序,输出从 1 到 n 数字的字符串表示。

  1. 如果 n 是3的倍数,输出“Fizz”;

  2. 如果 n 是5的倍数,输出“Buzz”;

  3. 如果 n 同时是3和5的倍数,输出 “FizzBuzz”。

难度:简单

示例:

n = 15,

返回:
[
“1”,
“2”,
“Fizz”,
“4”,
“Buzz”,
“Fizz”,
“7”,
“8”,
“Fizz”,
“Buzz”,
“11”,
“Fizz”,
“13”,
“14”,
“FizzBuzz”
]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fizz-buzz
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

  1. 模拟法
  2. 字符串连接
  3. 用散列表

解题代码

模拟法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public List<String> fizzBuzz(int n) {
List<String> list = new ArrayList<>();
for (int i = 1; i <= n; i++){
if (i % 3 == 0 && i % 5 == 0){
list.add("FizzBuzz");
}else if (i % 3 == 0){
list.add("Fizz");
}else if (i % 5 == 0){
list.add("Buzz");
}else {
list.add(String.valueOf(i));
}
}
return list;
}
}

官方解题代码

字符串连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Solution {
public List<String> fizzBuzz(int n) {
// ans list
List<String> ans = new ArrayList<String>();

for (int num = 1; num <= n; num++) {

boolean divisibleBy3 = (num % 3 == 0);
boolean divisibleBy5 = (num % 5 == 0);

String numAnsStr = "";

if (divisibleBy3) {
// Divides by 3, add Fizz
numAnsStr += "Fizz";
}

if (divisibleBy5) {
// Divides by 5, add Buzz
numAnsStr += "Buzz";
}

if (numAnsStr.equals("")) {
// Not divisible by 3 or 5, add the number
numAnsStr += Integer.toString(num);
}

// Append the current answer str to the ans list
ans.add(numAnsStr);
}

return ans;
}
}

用散列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
class Solution {
public List<String> fizzBuzz(int n) {

// ans list
List<String> ans = new ArrayList<String>();

// Hash map to store all fizzbuzz mappings.
HashMap<Integer, String> fizzBizzDict =
new HashMap<Integer, String>() {
{
put(3, "Fizz");
put(5, "Buzz");
}
};

for (int num = 1; num <= n; num++) {

String numAnsStr = "";

for (Integer key : fizzBizzDict.keySet()) {

// If the num is divisible by key,
// then add the corresponding string mapping to current numAnsStr
if (num % key == 0) {
numAnsStr += fizzBizzDict.get(key);
}
}

if (numAnsStr.equals("")) {
// Not divisible by 3 or 5, add the number
numAnsStr += Integer.toString(num);
}

// Append the current answer str to the ans list
ans.add(numAnsStr);
}

return ans;
}
}