Fizz Buzz
Problem
Write a program that outputs the string representation of numbers from 1 to n.
But for multiples of three it should output “Fizz” instead of the number and for the multiples of five output “Buzz”. For numbers which are multiples of both three and five output “FizzBuzz”.
Example:
n = 15,
Return:
[
"1",
"2",
"Fizz",
"4",
"Buzz",
"Fizz",
"7",
"8",
"Fizz",
"Buzz",
"11",
"Fizz",
"13",
"14",
"FizzBuzz"
]
Solution
public class Solution {
public List<String> fizzBuzz(int n) {
List<String> res = new ArrayList<>();
for (int i = 1; i <= n; i++) {
if (i % 3 == 0 && i % 5 == 0) res.add("FizzBuzz");
else if (i % 5 == 0) res.add("Buzz");
else if (i % 3 == 0) res.add("Fizz");
else res.add(i + "");
}
return res;
}
}
Follow Up! What if we are not allowed to use %
operation?
public class Solution {
public List<String> fizzBuzz(int n) {
List<String> res = new ArrayList<>();
for (int i = 1, fizz = 3, buzz = 5; i <= n; i++) {
if (i == fizz && i == buzz) {
res.add("FizzBuzz");
fizz += 3;
buzz += 5;
}
else if (i == fizz) {
res.add("Fizz");
fizz += 3;
}
else if (i == buzz) {
res.add("Buzz");
buzz += 5;
}
else res.add(i + "");
}
return res;
}
}
Analysis
The original problem is pretty straightforward
The only thing we need to be careful is that to check fizz && buzz
first
The sequence of other two else if
does not matter
In a real interview, however, we might be not allowed to use %
operation
But we can have our own fizz
and buzz
vars and update them when i == fizz
or i == buzz