From 451ed75a90afbfb154e7712f800b81bdbb9d9187 Mon Sep 17 00:00:00 2001 From: navaneedan07 Date: Thu, 31 Jul 2025 19:57:43 +0530 Subject: [PATCH 1/3] Refactored ReverseStringUsingStack --- src/test/java/com/thealgorithms/strings/ReverseStringTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/com/thealgorithms/strings/ReverseStringTest.java b/src/test/java/com/thealgorithms/strings/ReverseStringTest.java index 08f5fb586d82..9f13d82c75b9 100644 --- a/src/test/java/com/thealgorithms/strings/ReverseStringTest.java +++ b/src/test/java/com/thealgorithms/strings/ReverseStringTest.java @@ -3,6 +3,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.stream.Stream; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; From b7fbbcd97811a19b1ded992fcb667d991022d25e Mon Sep 17 00:00:00 2001 From: navaneedan07 Date: Thu, 31 Jul 2025 20:09:42 +0530 Subject: [PATCH 2/3] Add ReverseStringUsingStack --- .../stacks/ReverseStringUsingStack.java | 34 ++++++++++++++ .../thealgorithms/strings/ReverseString.java | 29 ++++++++++++ .../stacks/ReverseStringUsingStackTest.java | 44 +++++++++++++++++++ .../strings/ReverseStringTest.java | 12 +++++ 4 files changed, 119 insertions(+) create mode 100644 src/main/java/com/thealgorithms/stacks/ReverseStringUsingStack.java create mode 100644 src/test/java/com/thealgorithms/stacks/ReverseStringUsingStackTest.java diff --git a/src/main/java/com/thealgorithms/stacks/ReverseStringUsingStack.java b/src/main/java/com/thealgorithms/stacks/ReverseStringUsingStack.java new file mode 100644 index 000000000000..9e4c1ac9d1be --- /dev/null +++ b/src/main/java/com/thealgorithms/stacks/ReverseStringUsingStack.java @@ -0,0 +1,34 @@ +package com.thealgorithms.stacks; + +import java.util.Stack; + +public final class ReverseStringUsingStack { + private ReverseStringUsingStack() { + } + + /** + * @param str string to be reversed using stack + * @return reversed string + */ + public static String reverse(String str) { + // Check if the input string is null + if (str == null) { + throw new IllegalArgumentException("Input string cannot be null"); + } + Stack stack = new Stack<>(); + StringBuilder reversedString = new StringBuilder(); + // Check if the input string is empty + if (str.isEmpty()) { + return str; + } + // Push each character of the string onto the stack + for (char ch : str.toCharArray()) { + stack.push(ch); + } + // Pop each character from the stack and append to the StringBuilder + while (!stack.isEmpty()) { + reversedString.append(stack.pop()); + } + return reversedString.toString(); + } +} diff --git a/src/main/java/com/thealgorithms/strings/ReverseString.java b/src/main/java/com/thealgorithms/strings/ReverseString.java index 54a9b779e828..4969ac83e9dd 100644 --- a/src/main/java/com/thealgorithms/strings/ReverseString.java +++ b/src/main/java/com/thealgorithms/strings/ReverseString.java @@ -1,5 +1,7 @@ package com.thealgorithms.strings; +import java.util.Stack; + /** * Reverse String using different version */ @@ -57,4 +59,31 @@ public static String reverse3(String string) { } return sb.toString(); } + /** + * Reverses the given string using a stack. + * This method uses a stack to reverse the characters of the string. + * * @param str The input string to be reversed. + * @return The reversed string. + */ + public static String reverse4(String str) { + // Check if the input string is null + if (str == null) { + throw new IllegalArgumentException("Input string cannot be null"); + } + Stack stack = new Stack<>(); + StringBuilder reversedString = new StringBuilder(); + // Check if the input string is empty + if (str.isEmpty()) { + return str; + } + // Push each character of the string onto the stack + for (char ch : str.toCharArray()) { + stack.push(ch); + } + // Pop each character from the stack and append to the StringBuilder + while (!stack.isEmpty()) { + reversedString.append(stack.pop()); + } + return reversedString.toString(); + } } diff --git a/src/test/java/com/thealgorithms/stacks/ReverseStringUsingStackTest.java b/src/test/java/com/thealgorithms/stacks/ReverseStringUsingStackTest.java new file mode 100644 index 000000000000..cfd3ffee667b --- /dev/null +++ b/src/test/java/com/thealgorithms/stacks/ReverseStringUsingStackTest.java @@ -0,0 +1,44 @@ +package com.thealgorithms.stacks; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import org.junit.jupiter.api.Test; + +class ReverseStringUsingStackTest { + + @Test + void testRegularString() { + assertEquals("olleh", ReverseStringUsingStack.reverse("hello")); + } + + @Test + void testEmptyString() { + assertEquals("", ReverseStringUsingStack.reverse("")); + } + + @Test + void testPalindromeString() { + assertEquals("madam", ReverseStringUsingStack.reverse("madam")); + } + + @Test + void testSpecialCharacters() { + assertEquals("#@!321cba", ReverseStringUsingStack.reverse("abc123!@#")); + } + + @Test + void testSingleCharacter() { + assertEquals("x", ReverseStringUsingStack.reverse("x")); + } + + @Test + void testWhitespaceHandling() { + assertEquals("dlroW olleH", ReverseStringUsingStack.reverse("Hello World")); + } + + @Test + void testNullInput() { + assertThrows(IllegalArgumentException.class, () -> { ReverseStringUsingStack.reverse(null); }); + } +} diff --git a/src/test/java/com/thealgorithms/strings/ReverseStringTest.java b/src/test/java/com/thealgorithms/strings/ReverseStringTest.java index 9f13d82c75b9..9a7538f216c4 100644 --- a/src/test/java/com/thealgorithms/strings/ReverseStringTest.java +++ b/src/test/java/com/thealgorithms/strings/ReverseStringTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.strings; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.stream.Stream; import org.junit.jupiter.api.Test; @@ -32,4 +33,15 @@ public void testReverseString2(String input, String expectedOutput) { public void testReverseString3(String input, String expectedOutput) { assertEquals(expectedOutput, ReverseString.reverse3(input)); } + + @ParameterizedTest + @MethodSource("testCases") + public void testReverseString4(String input, String expectedOutput) { + assertEquals(expectedOutput, ReverseString.reverse4(input)); + } + + @Test + public void testReverseString4WithNullInput() { + assertThrows(IllegalArgumentException.class, () -> ReverseString.reverse4(null)); + } } From ceb6b93ba07b455f42f343786079c9c6442ef19e Mon Sep 17 00:00:00 2001 From: navaneedan07 Date: Fri, 1 Aug 2025 15:21:43 +0530 Subject: [PATCH 3/3] Refactored ReverseStringUsingStack --- .../stacks/ReverseStringUsingStack.java | 34 -------------- .../thealgorithms/strings/ReverseString.java | 2 +- .../stacks/ReverseStringUsingStackTest.java | 44 ------------------- .../strings/ReverseStringTest.java | 8 ++-- 4 files changed, 5 insertions(+), 83 deletions(-) delete mode 100644 src/main/java/com/thealgorithms/stacks/ReverseStringUsingStack.java delete mode 100644 src/test/java/com/thealgorithms/stacks/ReverseStringUsingStackTest.java diff --git a/src/main/java/com/thealgorithms/stacks/ReverseStringUsingStack.java b/src/main/java/com/thealgorithms/stacks/ReverseStringUsingStack.java deleted file mode 100644 index 9e4c1ac9d1be..000000000000 --- a/src/main/java/com/thealgorithms/stacks/ReverseStringUsingStack.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.thealgorithms.stacks; - -import java.util.Stack; - -public final class ReverseStringUsingStack { - private ReverseStringUsingStack() { - } - - /** - * @param str string to be reversed using stack - * @return reversed string - */ - public static String reverse(String str) { - // Check if the input string is null - if (str == null) { - throw new IllegalArgumentException("Input string cannot be null"); - } - Stack stack = new Stack<>(); - StringBuilder reversedString = new StringBuilder(); - // Check if the input string is empty - if (str.isEmpty()) { - return str; - } - // Push each character of the string onto the stack - for (char ch : str.toCharArray()) { - stack.push(ch); - } - // Pop each character from the stack and append to the StringBuilder - while (!stack.isEmpty()) { - reversedString.append(stack.pop()); - } - return reversedString.toString(); - } -} diff --git a/src/main/java/com/thealgorithms/strings/ReverseString.java b/src/main/java/com/thealgorithms/strings/ReverseString.java index 4969ac83e9dd..996aa68bb307 100644 --- a/src/main/java/com/thealgorithms/strings/ReverseString.java +++ b/src/main/java/com/thealgorithms/strings/ReverseString.java @@ -65,7 +65,7 @@ public static String reverse3(String string) { * * @param str The input string to be reversed. * @return The reversed string. */ - public static String reverse4(String str) { + public static String reverseStringUsingStack(String str) { // Check if the input string is null if (str == null) { throw new IllegalArgumentException("Input string cannot be null"); diff --git a/src/test/java/com/thealgorithms/stacks/ReverseStringUsingStackTest.java b/src/test/java/com/thealgorithms/stacks/ReverseStringUsingStackTest.java deleted file mode 100644 index cfd3ffee667b..000000000000 --- a/src/test/java/com/thealgorithms/stacks/ReverseStringUsingStackTest.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.thealgorithms.stacks; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import org.junit.jupiter.api.Test; - -class ReverseStringUsingStackTest { - - @Test - void testRegularString() { - assertEquals("olleh", ReverseStringUsingStack.reverse("hello")); - } - - @Test - void testEmptyString() { - assertEquals("", ReverseStringUsingStack.reverse("")); - } - - @Test - void testPalindromeString() { - assertEquals("madam", ReverseStringUsingStack.reverse("madam")); - } - - @Test - void testSpecialCharacters() { - assertEquals("#@!321cba", ReverseStringUsingStack.reverse("abc123!@#")); - } - - @Test - void testSingleCharacter() { - assertEquals("x", ReverseStringUsingStack.reverse("x")); - } - - @Test - void testWhitespaceHandling() { - assertEquals("dlroW olleH", ReverseStringUsingStack.reverse("Hello World")); - } - - @Test - void testNullInput() { - assertThrows(IllegalArgumentException.class, () -> { ReverseStringUsingStack.reverse(null); }); - } -} diff --git a/src/test/java/com/thealgorithms/strings/ReverseStringTest.java b/src/test/java/com/thealgorithms/strings/ReverseStringTest.java index 9a7538f216c4..476765b00dfc 100644 --- a/src/test/java/com/thealgorithms/strings/ReverseStringTest.java +++ b/src/test/java/com/thealgorithms/strings/ReverseStringTest.java @@ -36,12 +36,12 @@ public void testReverseString3(String input, String expectedOutput) { @ParameterizedTest @MethodSource("testCases") - public void testReverseString4(String input, String expectedOutput) { - assertEquals(expectedOutput, ReverseString.reverse4(input)); + public void testReverseStringUsingStack(String input, String expectedOutput) { + assertEquals(expectedOutput, ReverseString.reverseStringUsingStack(input)); } @Test - public void testReverseString4WithNullInput() { - assertThrows(IllegalArgumentException.class, () -> ReverseString.reverse4(null)); + public void testReverseStringUsingStackWithNullInput() { + assertThrows(IllegalArgumentException.class, () -> ReverseString.reverseStringUsingStack(null)); } } 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