FizzBuzz Solution in Python, C & JavaScript (Clean & Extensible)
Problem Statement
For i from 1 to n: print FizzBuzz if divisible by 3 and 5, Fizz if 3, Buzz if 5, else print the number.
Example
Input: n = 15
Output: ["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]
Time Complexity
O(n)
Space Complexity
O(n) output
The Intuition
String concatenation pattern — build output string by appending Fizz and Buzz independently, then fall back to str(i) if still empty.
Solution Code
def fizzBuzz(n):
res = []
for i in range(1, n+1):
s = ""
if i % 3 == 0: s += "Fizz"
if i % 5 == 0: s += "Buzz"
res.append(s or str(i))
return res
void fizzBuzz(int n) {
for (int i = 1; i <= n; i++) {
if (i%15==0) printf("FizzBuzz\n");
else if (i%3==0) printf("Fizz\n");
else if (i%5==0) printf("Buzz\n");
else printf("%d\n", i);
}
}
function fizzBuzz(n) {
return Array.from({length: n}, (_, i) => {
i++;
let s = "";
if (i % 3 === 0) s += "Fizz";
if (i % 5 === 0) s += "Buzz";
return s || String(i);
});
}
Frequently Asked Questions
Q: Why string concatenation over if/else?
The concatenation pattern is open for extension (add Jazz for 7) without changing existing conditions — it follows the Open/Closed Principle.
Practice These Problems in a Real Curriculum
DoxaTech Hub's 10-month programme covers Data Structures, Algorithms, Python, C, SQL, and Full-Stack Development through 40 weeks of real, graded projects.
Get Started → More Problems