diff --git a/src/main/java/com/thealgorithms/strings/Pangram.java b/src/main/java/com/thealgorithms/strings/Pangram.java index 01307b28f6c6..bf6bfabcaa5a 100644 --- a/src/main/java/com/thealgorithms/strings/Pangram.java +++ b/src/main/java/com/thealgorithms/strings/Pangram.java @@ -1,80 +1,36 @@ -package com.thealgorithms.strings; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; -import java.util.HashSet; +public class PangramTest { -/** - * Wikipedia: https://en.wikipedia.org/wiki/Pangram - */ -public final class Pangram { - private Pangram() { + @Test + public void testIsPangram() { + assertTrue(Pangram.isPangram("The quick brown fox jumps over the lazy dog")); + assertFalse(Pangram.isPangram("The quick brown fox jumps over the azy dog")); // L is missing + assertFalse(Pangram.isPangram("+-1234 This string is not alphabetical")); + assertFalse(Pangram.isPangram("\u0000/\\")); } - /** - * Test code - */ - public static void main(String[] args) { - assert isPangram("The quick brown fox jumps over the lazy dog"); - assert !isPangram("The quick brown fox jumps over the azy dog"); // L is missing - assert !isPangram("+-1234 This string is not alphabetical"); - assert !isPangram("\u0000/\\"); + @Test + public void testIsPangramUsingSet() { + assertTrue(Pangram.isPangramUsingSet("The quick brown fox jumps over the lazy dog")); + assertFalse(Pangram.isPangramUsingSet("The quick brown fox jumps over the azy dog")); // L is missing + assertFalse(Pangram.isPangramUsingSet("+-1234 This string is not alphabetical")); + assertFalse(Pangram.isPangramUsingSet("\u0000/\\")); } - /** - * Checks if a String is considered a Pangram - * - * @param s The String to check - * @return {@code true} if s is a Pangram, otherwise {@code false} - */ - // alternative approach using Java Collection Framework - public static boolean isPangramUsingSet(String s) { - HashSet alpha = new HashSet<>(); - s = s.trim().toLowerCase(); - for (int i = 0; i < s.length(); i++) { - if (s.charAt(i) != ' ') { - alpha.add(s.charAt(i)); - } - } - return alpha.size() == 26; + @Test + public void testIsPangram2() { + assertTrue(Pangram.isPangram2("The quick brown fox jumps over the lazy dog")); + assertFalse(Pangram.isPangram2("The quick brown fox jumps over the azy dog")); // L is missing + assertFalse(Pangram.isPangram2("+-1234 This string is not alphabetical")); + assertFalse(Pangram.isPangram2("\u0000/\\")); } - /** - * Checks if a String is considered a Pangram - * - * @param s The String to check - * @return {@code true} if s is a Pangram, otherwise {@code false} - */ - public static boolean isPangram(String s) { - boolean[] lettersExisting = new boolean[26]; - for (char c : s.toCharArray()) { - int letterIndex = c - (Character.isUpperCase(c) ? 'A' : 'a'); - if (letterIndex >= 0 && letterIndex < lettersExisting.length) { - lettersExisting[letterIndex] = true; - } - } - for (boolean letterFlag : lettersExisting) { - if (!letterFlag) { - return false; - } - } - return true; - } - - /** - * Checks if a String is Pangram or not by checking if each alhpabet is present or not - * - * @param s The String to check - * @return {@code true} if s is a Pangram, otherwise {@code false} - */ - public static boolean isPangram2(String s) { - if (s.length() < 26) { - return false; - } - s = s.toLowerCase(); // Converting s to Lower-Case - for (char i = 'a'; i <= 'z'; i++) { - if (s.indexOf(i) == -1) { - return false; // if any alphabet is not present, return false - } - } - return true; + @Test + public void testIsPangramUsingBitwise() { + assertTrue(Pangram.isPangramUsingBitwise("The quick brown fox jumps over the lazy dog")); + assertFalse(Pangram.isPangramUsingBitwise("Hello, World!")); } }