Skip to content

Commit b4866b4

Browse files
committed
Refactored ReverseStringUsingStack utility for reversing strings using stack
1 parent 3c5ae71 commit b4866b4

File tree

2 files changed

+64
-1
lines changed

2 files changed

+64
-1
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.thealgorithms.stacks;
2+
3+
import java.util.Stack;
4+
5+
public final class ReverseStringUsingStack {
6+
private ReverseStringUsingStack() {
7+
}
8+
9+
/**
10+
* @param str string to be reversed using stack
11+
* @return reversed string
12+
*/
13+
public static String reverse(String str) {
14+
// Check if the input string is null
15+
if (str == null) {
16+
throw new IllegalArgumentException("Input string cannot be null");
17+
}
18+
Stack<Character> stack = new Stack<>();
19+
StringBuilder reversedString = new StringBuilder();
20+
// Check if the input string is empty
21+
if (str.isEmpty()) {
22+
return str;
23+
}
24+
// Push each character of the string onto the stack
25+
for (char ch : str.toCharArray()) {
26+
stack.push(ch);
27+
}
28+
// Pop each character from the stack and append to the StringBuilder
29+
while (!stack.isEmpty()) {
30+
reversedString.append(stack.pop());
31+
}
32+
return reversedString.toString();
33+
}
34+
}

src/main/java/com/thealgorithms/strings/ReverseString.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.thealgorithms.strings;
22

3+
import java.util.Stack;
4+
35
/**
46
* Reverse String using different version
57
*/
@@ -57,4 +59,31 @@ public static String reverse3(String string) {
5759
}
5860
return sb.toString();
5961
}
60-
}
62+
63+
/**
64+
* Reverse version 4 the given string using a Stack.
65+
* This method pushes each character of the string onto a stack
66+
* and then pops them off to create the reversed string.
67+
*/
68+
public static String reverse4(String str) {
69+
if (str == null) {
70+
throw new IllegalArgumentException("Input string cannot be null");
71+
}
72+
Stack<Character> stack = new Stack<>();
73+
StringBuilder reversedString = new StringBuilder();
74+
// Check if the input string is empty
75+
if (str.isEmpty()) {
76+
return str;
77+
}
78+
// Push each character of the string onto the stack
79+
for (char i : str.toCharArray()) {
80+
stack.push(i);
81+
}
82+
// Pop each character from the stack and append to the StringBuilder
83+
while (!stack.isEmpty()) {
84+
reversedString.append(stack.pop());
85+
}
86+
return reversedString.toString();
87+
}
88+
89+
}

0 commit comments

Comments
 (0)