From e638861ac24d74a68639920339ef775d0cc828db Mon Sep 17 00:00:00 2001 From: "Ramit Gangwar (NoiR)" <54339318+TheDarkW3b@users.noreply.github.com> Date: Tue, 15 Oct 2024 16:39:55 +0530 Subject: [PATCH 1/6] Add LongestCommonPrefix.java --- .../strings/LongestCommonPrefix.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/main/java/com/thealgorithms/strings/LongestCommonPrefix.java diff --git a/src/main/java/com/thealgorithms/strings/LongestCommonPrefix.java b/src/main/java/com/thealgorithms/strings/LongestCommonPrefix.java new file mode 100644 index 000000000000..bb1e673fcdbd --- /dev/null +++ b/src/main/java/com/thealgorithms/strings/LongestCommonPrefix.java @@ -0,0 +1,17 @@ +package com.thealgorithms.strings; + +public final class LongestCommonPrefix { + public String longestCommonPrefix(String[] strs) { + if(strs == null || strs.length == 0) return ""; + + Arrays.sort(strs); + String shortest = strs[0]; + String longest = strs[strs.length - 1]; + + int index = 0; + while(index < shortest.length() && index < longest.length() && shortest.charAt(index) == longest.charAt(index)) + index++; + + return shortest.substring(0, index); + } +} From 5dbe20b9055de93320f122e6af6cac5c8e6ba873 Mon Sep 17 00:00:00 2001 From: "Ramit Gangwar (NoiR)" <54339318+TheDarkW3b@users.noreply.github.com> Date: Tue, 15 Oct 2024 22:01:50 +0530 Subject: [PATCH 2/6] Update LongestCommonPrefix.java --- .../java/com/thealgorithms/strings/LongestCommonPrefix.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/thealgorithms/strings/LongestCommonPrefix.java b/src/main/java/com/thealgorithms/strings/LongestCommonPrefix.java index bb1e673fcdbd..d7766466c330 100644 --- a/src/main/java/com/thealgorithms/strings/LongestCommonPrefix.java +++ b/src/main/java/com/thealgorithms/strings/LongestCommonPrefix.java @@ -1,5 +1,7 @@ package com.thealgorithms.strings; +import java.util.Arrays; + public final class LongestCommonPrefix { public String longestCommonPrefix(String[] strs) { if(strs == null || strs.length == 0) return ""; From 356c073bf0603d0efb34e6fe7d8f230917d797da Mon Sep 17 00:00:00 2001 From: "Ramit Gangwar (NoiR)" <54339318+TheDarkW3b@users.noreply.github.com> Date: Wed, 16 Oct 2024 22:03:23 +0530 Subject: [PATCH 3/6] Create LongestCommonPrefixTest.java --- .../strings/LongestCommonPrefixTest.java | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/test/java/com/thealgorithms/strings/LongestCommonPrefixTest.java diff --git a/src/test/java/com/thealgorithms/strings/LongestCommonPrefixTest.java b/src/test/java/com/thealgorithms/strings/LongestCommonPrefixTest.java new file mode 100644 index 000000000000..0a9a33ac6851 --- /dev/null +++ b/src/test/java/com/thealgorithms/strings/LongestCommonPrefixTest.java @@ -0,0 +1,72 @@ +package com.thealgorithms.strings; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class LongestCommonPrefixTest { + + private final LongestCommonPrefix longestCommonPrefix = new LongestCommonPrefix(); + + @Test + public void testCommonPrefix() { + String[] input = {"flower", "flow", "flight"}; + String expected = "fl"; + assertEquals(expected, longestCommonPrefix.longestCommonPrefix(input)); + } + + @Test + public void testNoCommonPrefix() { + String[] input = {"dog", "racecar", "car"}; + String expected = ""; + assertEquals(expected, longestCommonPrefix.longestCommonPrefix(input)); + } + + @Test + public void testEmptyArray() { + String[] input = {}; + String expected = ""; + assertEquals(expected, longestCommonPrefix.longestCommonPrefix(input)); + } + + @Test + public void testNullArray() { + String[] input = null; + String expected = ""; + assertEquals(expected, longestCommonPrefix.longestCommonPrefix(input)); + } + + @Test + public void testSingleString() { + String[] input = {"single"}; + String expected = "single"; + assertEquals(expected, longestCommonPrefix.longestCommonPrefix(input)); + } + + @Test + public void testCommonPrefixWithDifferentLengths() { + String[] input = {"ab", "a"}; + String expected = "a"; + assertEquals(expected, longestCommonPrefix.longestCommonPrefix(input)); + } + + @Test + public void testAllSameStrings() { + String[] input = {"test", "test", "test"}; + String expected = "test"; + assertEquals(expected, longestCommonPrefix.longestCommonPrefix(input)); + } + + @Test + public void testPrefixAtEnd() { + String[] input = {"abcde", "abcfgh", "abcmnop"}; + String expected = "abc"; + assertEquals(expected, longestCommonPrefix.longestCommonPrefix(input)); + } + + @Test + public void testMixedCase() { + String[] input = {"Flower", "flow", "flight"}; + String expected = ""; + assertEquals(expected, longestCommonPrefix.longestCommonPrefix(input)); + } +} From 57a8c3056704fd325f706944475c2607d62cab55 Mon Sep 17 00:00:00 2001 From: "Ramit Gangwar (NoiR)" <54339318+TheDarkW3b@users.noreply.github.com> Date: Wed, 16 Oct 2024 22:07:20 +0530 Subject: [PATCH 4/6] Update DIRECTORY.md --- DIRECTORY.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index e511ab40b329..06dd8ae95b0d 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -645,6 +645,7 @@ * [Isomorphic](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/strings/Isomorphic.java) * [KMP](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/strings/KMP.java) * [LetterCombinationsOfPhoneNumber](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/strings/LetterCombinationsOfPhoneNumber.java) + * [LongestCommonPrefix](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/strings/LongestCommonPrefix.java) * [LongestNonRepetitiveSubstring](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/strings/LongestNonRepetitiveSubstring.java) * [LongestPalindromicSubstring](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/strings/LongestPalindromicSubstring.java) * [Lower](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/strings/Lower.java) @@ -1210,6 +1211,7 @@ * [HorspoolSearchTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/strings/HorspoolSearchTest.java) * [IsomorphicTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/strings/IsomorphicTest.java) * [LetterCombinationsOfPhoneNumberTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/strings/LetterCombinationsOfPhoneNumberTest.java) + * [LongestCommonPrefixTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/strings/LongestCommonPrefixTest.java) * [LongestNonRepetitiveSubstringTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/strings/LongestNonRepetitiveSubstringTest.java) * [LongestPalindromicSubstringTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/strings/LongestPalindromicSubstringTest.java) * [LowerTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/strings/LowerTest.java) From 504b8c83b9369ffd6aad777c90e7f8fc7e16d421 Mon Sep 17 00:00:00 2001 From: "Ramit Gangwar (NoiR)" <54339318+TheDarkW3b@users.noreply.github.com> Date: Wed, 16 Oct 2024 22:10:17 +0530 Subject: [PATCH 5/6] Update LongestCommonPrefix.java Fixed formatting --- .../com/thealgorithms/strings/LongestCommonPrefix.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/strings/LongestCommonPrefix.java b/src/main/java/com/thealgorithms/strings/LongestCommonPrefix.java index d7766466c330..0fabdaa2658b 100644 --- a/src/main/java/com/thealgorithms/strings/LongestCommonPrefix.java +++ b/src/main/java/com/thealgorithms/strings/LongestCommonPrefix.java @@ -4,15 +4,18 @@ public final class LongestCommonPrefix { public String longestCommonPrefix(String[] strs) { - if(strs == null || strs.length == 0) return ""; + if (strs == null || strs.length == 0) { + return ""; + } Arrays.sort(strs); String shortest = strs[0]; String longest = strs[strs.length - 1]; int index = 0; - while(index < shortest.length() && index < longest.length() && shortest.charAt(index) == longest.charAt(index)) + while (index < shortest.length() && index < longest.length() && shortest.charAt(index) == longest.charAt(index)) { index++; + } return shortest.substring(0, index); } From bff1ce1715f8fe290da6f02c8accd46795626357 Mon Sep 17 00:00:00 2001 From: "Ramit Gangwar (NoiR)" <54339318+TheDarkW3b@users.noreply.github.com> Date: Sat, 19 Oct 2024 10:33:36 +0530 Subject: [PATCH 6/6] Update LongestCommonPrefixTest.java --- .../com/thealgorithms/strings/LongestCommonPrefixTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/strings/LongestCommonPrefixTest.java b/src/test/java/com/thealgorithms/strings/LongestCommonPrefixTest.java index 0a9a33ac6851..580a2726d285 100644 --- a/src/test/java/com/thealgorithms/strings/LongestCommonPrefixTest.java +++ b/src/test/java/com/thealgorithms/strings/LongestCommonPrefixTest.java @@ -1,8 +1,9 @@ package com.thealgorithms.strings; -import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + public class LongestCommonPrefixTest { private final LongestCommonPrefix longestCommonPrefix = new LongestCommonPrefix(); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy