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.

Share this article

Comments

Join the discussion. Got a question, found an issue, or want to share your experience?

Leave a Comment

Your email stays private. We just use it for replies.

Nothing to preview yet.

Use **bold**, *italic*, `code`, ```code blocks```, [link](url), > quote, - list