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

results matching ""

    No results matching ""