Bird
Raised Fist0
DSA Javaprogramming~20 mins

String Reversal Approaches in DSA Java - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
String Reversal Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of String reversal using StringBuilder
What is the output of the following Java code snippet?
DSA Java
public class Main {
    public static void main(String[] args) {
        String original = "hello";
        String reversed = new StringBuilder(original).reverse().toString();
        System.out.println(reversed);
    }
}
Aolleh
Bhello
Colle
DSyntaxError
Attempts:
2 left
💡 Hint
StringBuilder has a reverse() method that reverses the characters.
❓ Predict Output
intermediate
2:00remaining
Output of manual character swap reversal
What is the output of this Java code that reverses a string by swapping characters?
DSA Java
public class Main {
    public static void main(String[] args) {
        char[] chars = {'a', 'b', 'c', 'd'};
        int left = 0, right = chars.length - 1;
        while (left < right) {
            char temp = chars[left];
            chars[left] = chars[right];
            chars[right] = temp;
            left++;
            right--;
        }
        System.out.println(new String(chars));
    }
}
Aabcd
Bdcba
Cbadc
DRuntimeError
Attempts:
2 left
💡 Hint
Swapping characters from ends moves them to reverse positions.
❓ Predict Output
advanced
2:00remaining
Output of recursive string reversal function
What is printed when this recursive Java method is called with input "abc"?
DSA Java
public class Main {
    public static String reverse(String s) {
        if (s.isEmpty()) {
            return s;
        }
        return reverse(s.substring(1)) + s.charAt(0);
    }
    public static void main(String[] args) {
        System.out.println(reverse("abc"));
    }
}
AStackOverflowError
Babc
Ccba
Dacb
Attempts:
2 left
💡 Hint
The function calls itself on substring excluding first char, then adds first char at end.
❓ Predict Output
advanced
2:00remaining
Output of String reversal using streams
What is the output of this Java code that reverses a string using streams?
DSA Java
import java.util.stream.*;
public class Main {
    public static void main(String[] args) {
        String original = "java";
        String reversed = IntStream.rangeClosed(1, original.length())
            .mapToObj(i -> original.charAt(original.length() - i))
            .map(String::valueOf)
            .collect(Collectors.joining());
        System.out.println(reversed);
    }
}
ACompilationError
Bjava
Cajav
Davaj
Attempts:
2 left
💡 Hint
The code maps indices from end to start and collects characters into a string.
🧠 Conceptual
expert
2:00remaining
Time complexity of different string reversal methods
Which of the following statements about time complexity of string reversal methods in Java is correct?
AUsing StringBuilder reverse() method runs in O(n) time where n is string length.
BReversing string by concatenating characters in a loop runs in O(n) time.
CRecursive reversal method runs in O(1) time due to tail recursion optimization.
DUsing streams to reverse a string runs in O(n^2) time because of repeated string concatenations.
Attempts:
2 left
💡 Hint
Consider how many times characters are processed and cost of string concatenation.

Practice

(1/5)
1. Which of the following methods correctly reverses a string in Java using built-in functions?
easy
A. Using new StringBuilder(str).reverse().toString()
B. Using str.reverse()
C. Using str.toCharArray().reverse()
D. Using String.reverse(str)

Solution

  1. Step 1: Understand Java String reversal methods

    Java's String class does not have a reverse() method, but StringBuilder does.
  2. Step 2: Identify correct usage of StringBuilder

    Creating a StringBuilder from the string and calling reverse() then toString() returns the reversed string.
  3. Final Answer:

    Using new StringBuilder(str).reverse().toString() -> Option A
  4. Quick Check:

    StringBuilder.reverse() = correct reversal [OK]
Hint: Use StringBuilder's reverse() method for easy string reversal [OK]
Common Mistakes:
  • Trying to call reverse() directly on String
  • Using non-existent String.reverse() method
  • Assuming toCharArray() has reverse() method
2. Which of the following code snippets correctly reverses a string str using a for loop in Java?
easy
A. for (int i = 0; i < str.length(); i++) reversed += str.charAt(i);
B. for (int i = 1; i <= str.length(); i++) reversed += str.charAt(i);
C. for (int i = str.length() - 1; i >= 0; i--) reversed += str.charAt(i);
D. for (int i = str.length(); i > 0; i--) reversed += str.charAt(i);

Solution

  1. Step 1: Understand string indexing in Java

    String indices start at 0 and go to length()-1.
  2. Step 2: Identify correct loop to reverse string

    Loop from last index (length()-1) down to 0, appending characters to reversed string.
  3. Final Answer:

    for (int i = str.length() - 1; i >= 0; i--) reversed += str.charAt(i); -> Option C
  4. Quick Check:

    Loop from end to start = correct reversal [OK]
Hint: Loop backward from length()-1 to 0 to reverse string [OK]
Common Mistakes:
  • Looping forward instead of backward
  • Using 1-based indexing instead of 0-based
  • Accessing charAt with index equal to length()
3. What is the output of the following Java code?
String str = "hello";
String reversed = "";
for (int i = str.length() - 1; i >= 0; i--) {
    reversed += str.charAt(i);
}
System.out.println(reversed);
medium
A. hello
B. olleh
C. olle
D. SyntaxError

Solution

  1. Step 1: Trace the for loop from end to start

    The loop starts at index 4 ('o') and goes down to 0 ('h'), appending each character to reversed.
  2. Step 2: Build reversed string step-by-step

    Characters appended in order: 'o', 'l', 'l', 'e', 'h' forming "olleh".
  3. Final Answer:

    olleh -> Option B
  4. Quick Check:

    Reverse of "hello" = "olleh" [OK]
Hint: Appending chars backward builds reversed string [OK]
Common Mistakes:
  • Expecting original string output
  • Confusing loop direction
  • Assuming syntax error due to += on strings
4. Identify the error in the following Java code that attempts to reverse a string:
String str = "world";
String reversed = "";
for (int i = 0; i <= str.length(); i++) {
    reversed += str.charAt(i);
}
System.out.println(reversed);
medium
A. No error, code runs correctly
B. String reversed should be a StringBuilder instead of String
C. Use str.reverse() instead of loop
D. Loop condition should be i < str.length() to avoid IndexOutOfBoundsException

Solution

  1. Step 1: Check loop boundary conditions

    The loop runs from i=0 to i=str.length() inclusive, but valid indices are 0 to str.length()-1.
  2. Step 2: Identify exception cause

    Accessing str.charAt(str.length()) causes IndexOutOfBoundsException.
  3. Final Answer:

    Loop condition should be i < str.length() to avoid IndexOutOfBoundsException -> Option D
  4. Quick Check:

    Index must be less than length() [OK]
Hint: Use i < length() in loops to avoid index errors [OK]
Common Mistakes:
  • Using <= instead of < in loop condition
  • Ignoring exception from invalid index
  • Assuming StringBuilder is mandatory
5. Given a string str, which approach efficiently reverses it without using extra space for another string in Java?
hard
A. Convert to char array, swap characters from ends moving inward, then create new string
B. Use StringBuilder.reverse() which creates a new reversed string internally
C. Concatenate characters in reverse order using a loop and a new string
D. Use recursion to build reversed string by concatenation

Solution

  1. Step 1: Understand in-place reversal concept

    Strings in Java are immutable, so we cannot change them directly, but char arrays can be modified in place.
  2. Step 2: Use char array swapping to reverse without extra string

    Convert string to char array, swap characters from start and end moving inward, then create string from modified array.
  3. Step 3: Compare with other options

    Other methods create new strings or use extra space, so not in-place.
  4. Final Answer:

    Convert to char array, swap characters from ends moving inward, then create new string -> Option A
  5. Quick Check:

    In-place reversal uses char array swaps [OK]
Hint: Use char array swaps for in-place string reversal [OK]
Common Mistakes:
  • Assuming StringBuilder.reverse() is in-place
  • Using string concatenation causing extra space
  • Ignoring string immutability in Java
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard