From 1ea9f49a7478187ec1e6bbde6be2a48cf9e89dbf Mon Sep 17 00:00:00 2001 From: Ayesha Rathnayake Date: Tue, 7 Oct 2025 15:14:39 +0530 Subject: [PATCH 1/4] Enhance Alphabetical.isAlphabetical with null and empty string check --- .../java/com/thealgorithms/strings/Alphabetical.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/thealgorithms/strings/Alphabetical.java b/src/main/java/com/thealgorithms/strings/Alphabetical.java index ef2974eb427d..7abc9abfb3bb 100644 --- a/src/main/java/com/thealgorithms/strings/Alphabetical.java +++ b/src/main/java/com/thealgorithms/strings/Alphabetical.java @@ -21,12 +21,17 @@ private Alphabetical() { * @return {@code true} if all characters are in alphabetical order (case-insensitive), otherwise {@code false} */ public static boolean isAlphabetical(String s) { + if (s == null || s.isEmpty()) { + return false; + } s = s.toLowerCase(); - for (int i = 0; i < s.length() - 1; ++i) { - if (!Character.isLetter(s.charAt(i)) || s.charAt(i) > s.charAt(i + 1)) { + for (int i = 0; i < s.length() - 1; i++) { + char current = s.charAt(i); + char next = s.charAt(i + 1); + if (!Character.isLetter(current) || current > next) { return false; } } - return !s.isEmpty() && Character.isLetter(s.charAt(s.length() - 1)); + return Character.isLetter(s.charAt(s.length() - 1)); } } From 7c1940ea758801316405ff279ab3456f4324ea5c Mon Sep 17 00:00:00 2001 From: Ayesha Rathnayake Date: Tue, 7 Oct 2025 15:38:18 +0530 Subject: [PATCH 2/4] Add test cases for strings ending with non-letter to fix coverage --- .../thealgorithms/strings/AlphabeticalTest.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/strings/AlphabeticalTest.java b/src/test/java/com/thealgorithms/strings/AlphabeticalTest.java index 7b41e11ef22f..b8dd8610fe1d 100644 --- a/src/test/java/com/thealgorithms/strings/AlphabeticalTest.java +++ b/src/test/java/com/thealgorithms/strings/AlphabeticalTest.java @@ -8,8 +8,23 @@ public class AlphabeticalTest { @ParameterizedTest(name = "\"{0}\" → Expected: {1}") - @CsvSource({"'abcdefghijklmno', true", "'abcdxxxyzzzz', true", "'123a', false", "'abcABC', false", "'abcdefghikjlmno', false", "'aBC', true", "'abc', true", "'xyzabc', false", "'abcxyz', true", "'', false", "'1', false"}) + @CsvSource({ + "'abcdefghijklmno', true", + "'abcdxxxyzzzz', true", + "'123a', false", + "'abcABC', false", + "'abcdefghikjlmno', false", + "'aBC', true", + "'abc', true", + "'xyzabc', false", + "'abcxyz', true", + "'', false", + "'1', false", + "'abc!', false", // <--- string ending with non-letter + "'ABc1', false" // <--- another example + }) void testIsAlphabetical(String input, boolean expected) { assertEquals(expected, Alphabetical.isAlphabetical(input)); } + } From d6222db7af65238d5e20540a72b6b0e9d095823a Mon Sep 17 00:00:00 2001 From: Ayesha Rathnayake Date: Tue, 7 Oct 2025 15:41:46 +0530 Subject: [PATCH 3/4] Add test cases for strings ending with non-letter to fix patch coverage --- src/test/java/com/thealgorithms/strings/AlphabeticalTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/thealgorithms/strings/AlphabeticalTest.java b/src/test/java/com/thealgorithms/strings/AlphabeticalTest.java index b8dd8610fe1d..a3f8afa8160c 100644 --- a/src/test/java/com/thealgorithms/strings/AlphabeticalTest.java +++ b/src/test/java/com/thealgorithms/strings/AlphabeticalTest.java @@ -20,8 +20,8 @@ public class AlphabeticalTest { "'abcxyz', true", "'', false", "'1', false", - "'abc!', false", // <--- string ending with non-letter - "'ABc1', false" // <--- another example + "'abc!', false", // <-- missing coverage + "'ABc1', false" // <-- optional extra }) void testIsAlphabetical(String input, boolean expected) { assertEquals(expected, Alphabetical.isAlphabetical(input)); From ca212b48fae95f614037dcc6ec1ac3f76734294d Mon Sep 17 00:00:00 2001 From: Ayesha Rathnayake Date: Tue, 7 Oct 2025 15:48:53 +0530 Subject: [PATCH 4/4] Apply clang-format to AlphabeticalTest.java --- pom.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pom.xml b/pom.xml index 938fb41088dc..9319178c0bf2 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,13 @@ commons-collections4 4.5.0 + + + org.junit.jupiter + junit-jupiter + 5.9.3 + test +