Problem
Print numbers 1 to n. For multiples of 3 print “Fizz”, for multiples of 5 print “Buzz”, for multiples of both print “FizzBuzz”.
Example
Input: n = 5
Output: ["1","2","Fizz","4","Buzz"]
Solution
Simple loop with conditionals. Check divisibility by 15 first (or use string concatenation).
def fizz_buzz(n):
result = []
for i in range(1, n + 1):
s = ''
if i % 3 == 0: s += 'Fizz'
if i % 5 == 0: s += 'Buzz'
result.append(s or str(i))
return result
function fizzBuzz(n) {
const result = [];
for (let i = 1; i <= n; i++) {
let s = '';
if (i % 3 === 0) s += 'Fizz';
if (i % 5 === 0) s += 'Buzz';
result.push(s || String(i));
}
return result;
}
vector<string> fizzBuzz(int n) {
vector<string> result;
for (int i = 1; i <= n; i++) {
string s = "";
if (i % 3 == 0) s += "Fizz";
if (i % 5 == 0) s += "Buzz";
if (s.empty()) s = to_string(i);
result.push_back(s);
}
return result;
}
public List<String> fizzBuzz(int n) {
List<String> result = new ArrayList<>();
for (int i = 1; i <= n; i++) {
String s = "";
if (i % 3 == 0) s += "Fizz";
if (i % 5 == 0) s += "Buzz";
if (s.isEmpty()) s = String.valueOf(i);
result.add(s);
}
return result;
}
Complexity
- Time: O(n)
- Space: O(n)
Explanation
The string concatenation pattern handles the FizzBuzz case (multiples of 15) elegantly without checking 15 explicitly.
Comments
Join the discussion. Got a question, found an issue, or want to share your experience?