DEV Community

Shelner
Shelner

Posted on

Reverse String with Stack or ArrayList

Solving Code

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

public class ReverseString {
    public static void main(String[] args) { }

    public static String reverseString(String s) {
        Stack<Character> stack = new Stack<>();
        String reverse = "";
        for (char c : s.toCharArray()) {
            stack.push(c);
        }
        while (!stack.isEmpty()) {
            reverse += stack.pop();
        }
        return reverse;
    }

    public static String reverStringArrayList(String s) {
        List<Character> list = new ArrayList<>();
        String reverse = "";
        for (char c : s.toCharArray()) {
            list.add(c);
        }
        for (int i = list.size() - 1; i >=0; i--) {
            reverse += list.get(i);
        }
        return reverse;
    }
}
Enter fullscreen mode Exit fullscreen mode

Test code with JUnit

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

public class ReverseStringTest {

    @Test
    void testNormalWord() {
        String hello = "hello";
        String expected = "olleh";
        String result = ReverseString.reverseString(hello);
        assertEquals(expected, result);
    }

    @Test
    void testSpaceWithWords() {
        String value = "This is a pen.";
        String expected = ".nep a si sihT";
        String result = ReverseString.reverStringArrayList(value);
        assertEquals(expected, result);
    }
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)