412. Fizz Buzz

Easy

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"
]

 

package leetcode.easy;

public class FizzBuzz {
	public java.util.List<String> fizzBuzz1(int n) {

		// ans list
		java.util.List<String> ans = new java.util.ArrayList<String>();

		for (int num = 1; num <= n; num++) {

			boolean divisibleBy3 = (num % 3 == 0);
			boolean divisibleBy5 = (num % 5 == 0);

			if (divisibleBy3 && divisibleBy5) {
				// Divides by both 3 and 5, add FizzBuzz
				ans.add("FizzBuzz");
			} else if (divisibleBy3) {
				// Divides by 3, add Fizz
				ans.add("Fizz");
			} else if (divisibleBy5) {
				// Divides by 5, add Buzz
				ans.add("Buzz");
			} else {
				// Not divisible by 3 or 5, add the number
				ans.add(Integer.toString(num));
			}
		}

		return ans;
	}

	public java.util.List<String> fizzBuzz2(int n) {
		// ans list
		java.util.List<String> ans = new java.util.ArrayList<String>();

		for (int num = 1; num <= n; num++) {

			boolean divisibleBy3 = (num % 3 == 0);
			boolean divisibleBy5 = (num % 5 == 0);

			String numAnsStr = "";

			if (divisibleBy3) {
				// Divides by 3, add Fizz
				numAnsStr += "Fizz";
			}

			if (divisibleBy5) {
				// Divides by 5, add Buzz
				numAnsStr += "Buzz";
			}

			if (numAnsStr.equals("")) {
				// Not divisible by 3 or 5, add the number
				numAnsStr += Integer.toString(num);
			}

			// Append the current answer str to the ans list
			ans.add(numAnsStr);
		}

		return ans;
	}

	public java.util.List<String> fizzBuzz3(int n) {

		// ans list
		java.util.List<String> ans = new java.util.ArrayList<String>();

		// Hash map to store all fizzbuzz mappings.
		java.util.HashMap<Integer, String> fizzBizzDict = new java.util.HashMap<Integer, String>() {
			{
				put(3, "Fizz");
				put(5, "Buzz");
			}
		};

		for (int num = 1; num <= n; num++) {

			String numAnsStr = "";

			for (Integer key : fizzBizzDict.keySet()) {

				// If the num is divisible by key,
				// then add the corresponding string mapping to current
				// numAnsStr
				if (num % key == 0) {
					numAnsStr += fizzBizzDict.get(key);
				}
			}

			if (numAnsStr.equals("")) {
				// Not divisible by 3 or 5, add the number
				numAnsStr += Integer.toString(num);
			}

			// Append the current answer str to the ans list
			ans.add(numAnsStr);
		}

		return ans;
	}

	@org.junit.Test
	public void test() {
		System.out.println(fizzBuzz1(15));
		System.out.println(fizzBuzz2(15));
		System.out.println(fizzBuzz3(15));
	}
}