算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !

今天和大家聊的问题叫做 Fizz Buzz,我们先来看题面:​https://leetcode-cn.com/problems/fizz-buzz/​
Given an integer n, return a string array answer (1-indexed) where:answer[i] == "FizzBuzz" if i is divisible by 3 and 5.answer[i] == "Fizz" if i is divisible by 3.answer[i] == "Buzz" if i is divisible by 5.answer[i] == i if non of the above conditions are true.

写一个程序,输出从 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"
]


解题


模拟法思路就像你每次玩 FizzBuzz 那样,你只需要判断这个数是能被 3 整除?还是能被 5 整除?或者是都能被整除。算法初始化一个空的答案列表。遍历 1 ... N1...N。对于每个数,判断它能不能同时被 3 和 5 整除,如果可以就把 FizzBuzz 加入答案列表。如果不行,判断它能不能被 3 整除,如果可以,把 Fizz 加入答案列表。如果还是不行,判断它能不能被 5 整除,如果可以,把 Buzz 加入答案列表。如果以上都不行,把这个数加入答案列表。

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);
if (divisibleBy3 && divisibleBy5) {
// Divides by both 3 and 5, add FizzBuzz
ans.add("FizzBuzz");
} else if (divisibleBy3) {
// Divides by 3, add Fizz
ans.add("Fizz");
} else if (divisibleBy5) {
// Divides by 5, add Buzz
ans.add("Buzz");
} else {
// Not divisible by 3 or 5, add the number
ans.add(Integer.toString(num));
}
}
return ans;
}
}



好了,今天的文章就到这里,如果觉得有所收获, 

​LeetCode刷题实战412:Fizz Buzz_整除