diff --git a/src/main/java/com/thealgorithms/others/FizzBuzz.java b/src/main/java/com/thealgorithms/others/FizzBuzz.java new file mode 100644 index 000000000000..c4a41d6eac8b --- /dev/null +++ b/src/main/java/com/thealgorithms/others/FizzBuzz.java @@ -0,0 +1,34 @@ +package com.thealgorithms.others; + +import java.util.ArrayList; +import java.util.List; + +/** + * Classic FizzBuzz: for numbers 1 to n, returns "FizzBuzz" if divisible by + * both 3 and 5, "Fizz" if divisible by 3, "Buzz" if divisible by 5, or the + * number as a string otherwise. + * + *

Time complexity: O(n), Space complexity: O(n) + * + * @see LeetCode #412 + */ +public final class FizzBuzz { + private FizzBuzz() { + } + + public static List fizzBuzz(int n) { + List result = new ArrayList<>(); + for (int i = 1; i <= n; i++) { + if (i % 15 == 0) { + result.add("FizzBuzz"); + } else if (i % 3 == 0) { + result.add("Fizz"); + } else if (i % 5 == 0) { + result.add("Buzz"); + } else { + result.add(String.valueOf(i)); + } + } + return result; + } +} diff --git a/src/test/java/com/thealgorithms/others/FizzBuzzTest.java b/src/test/java/com/thealgorithms/others/FizzBuzzTest.java new file mode 100644 index 000000000000..09a97972a9b1 --- /dev/null +++ b/src/test/java/com/thealgorithms/others/FizzBuzzTest.java @@ -0,0 +1,39 @@ +package com.thealgorithms.others; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.List; +import org.junit.jupiter.api.Test; + +public class FizzBuzzTest { + + @Test + public void testFizzBuzzUpToFifteen() { + List result = FizzBuzz.fizzBuzz(15); + assertEquals("1", result.get(0)); + assertEquals("2", result.get(1)); + assertEquals("Fizz", result.get(2)); + assertEquals("4", result.get(3)); + assertEquals("Buzz", result.get(4)); + assertEquals("Fizz", result.get(5)); + assertEquals("7", result.get(6)); + assertEquals("8", result.get(7)); + assertEquals("Fizz", result.get(8)); + assertEquals("Buzz", result.get(9)); + assertEquals("11", result.get(10)); + assertEquals("Fizz", result.get(11)); + assertEquals("13", result.get(12)); + assertEquals("14", result.get(13)); + assertEquals("FizzBuzz", result.get(14)); + } + + @Test + public void testSingleElement() { + assertEquals(List.of("1"), FizzBuzz.fizzBuzz(1)); + } + + @Test + public void testFizz() { + assertEquals(List.of("1", "2", "Fizz"), FizzBuzz.fizzBuzz(3)); + } +}