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
+
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));
}
}
diff --git a/src/test/java/com/thealgorithms/strings/AlphabeticalTest.java b/src/test/java/com/thealgorithms/strings/AlphabeticalTest.java
index 7b41e11ef22f..a3f8afa8160c 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", // <-- missing coverage
+ "'ABc1', false" // <-- optional extra
+ })
void testIsAlphabetical(String input, boolean expected) {
assertEquals(expected, Alphabetical.isAlphabetical(input));
}
+
}