Bird
Raised Fist0
DSA C++programming~10 mins

String Reversal Approaches in DSA C++ - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to reverse a string using the built-in reverse function.

DSA C++
#include <algorithm>
#include <string>
#include <iostream>

int main() {
    std::string s = "hello";
    std::reverse(s.[1](), s.end());
    std::cout << s << std::endl;
    return 0;
}
Drag options to blanks, or click blank then click option'
Abegin
Bstart
Cfront
Dfirst
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'start()' or 'front()' which are not valid iterator methods.
Using 'first()' which does not exist for std::string.
2fill in blank
medium

Complete the code to reverse a string by swapping characters using a loop.

DSA C++
#include <algorithm>
#include <string>
#include <iostream>

int main() {
    std::string s = "world";
    int n = s.size();
    for (int i = 0; i < n / 2; ++i) {
        std::swap(s[i], s[[1]]);
    }
    std::cout << s << std::endl;
    return 0;
}
Drag options to blanks, or click blank then click option'
Ai + 1
Bn - i - 1
Cn + i
Dn - 1
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'n - 1' which always points to the last character only.
Using 'i + 1' which moves forward instead of backward.
3fill in blank
hard

Fix the error in the code that attempts to reverse a string using a while loop.

DSA C++
#include <string>
#include <iostream>

int main() {
    std::string s = "example";
    int left = 0;
    int right = s.size() - 1;
    while (left < right) {
        char temp = s[left];
        s[left] = s[[1]];
        s[right] = temp;
        ++left;
        --right;
    }
    std::cout << s << std::endl;
    return 0;
}
Drag options to blanks, or click blank then click option'
Aright - 1
Bleft
Cleft + 1
Dright
Attempts:
3 left
💡 Hint
Common Mistakes
Assigning s[left] to itself causing no change.
Using left + 1 or right - 1 which skips characters.
4fill in blank
hard

Fill both blanks to create a reversed copy of a string using a for loop.

DSA C++
#include <string>
#include <iostream>

int main() {
    std::string s = "reverse";
    std::string rev = "";
    for (int i = s.size() - 1; i >= 0; [1]) {
        rev.[2](s[i]);
    }
    std::cout << rev << std::endl;
    return 0;
}
Drag options to blanks, or click blank then click option'
A--i
B++i
Cpush_back
Dappend
Attempts:
3 left
💡 Hint
Common Mistakes
Using ++i which causes an infinite loop.
Using append which expects a string, not a single char.
5fill in blank
hard

Fill the blanks to create a reversed string using a range-based for loop and prepending characters.

DSA C++
#include <string>
#include <iostream>

int main() {
    std::string s = "loop";
    std::string rev = "";
    for (char c : s) {
        rev = [1] + [2];
    }
    std::cout << rev << std::endl;
    return 0;
}
Drag options to blanks, or click blank then click option'
Arev
Bc
Crev + c
Dc + rev
Attempts:
3 left
💡 Hint
Common Mistakes
Appending instead of prepending causing no reversal.
Swapping the order incorrectly.

Practice

(1/5)
1. What does the std::reverse function do when applied to a string in C++?
easy
A. It reverses the order of characters in the string.
B. It sorts the characters in ascending order.
C. It removes all vowels from the string.
D. It converts all characters to uppercase.

Solution

  1. Step 1: Understand std::reverse behavior

    The std::reverse function reverses the order of elements in a range, here characters in a string.
  2. Step 2: Apply to string

    When applied to a string, it changes the string so the last character becomes first, and so on.
  3. Final Answer:

    It reverses the order of characters in the string. -> Option A
  4. Quick Check:

    std::reverse reverses string characters [OK]
Hint: std::reverse flips string characters in place [OK]
Common Mistakes:
  • Thinking std::reverse sorts characters
  • Confusing reversal with uppercase conversion
  • Assuming it removes characters
2. Which of the following is the correct syntax to reverse a string s using std::reverse in C++?
easy
A. std::reverse(s.begin(), s.end());
B. std::reverse(s, 0, s.length());
C. reverse(s.begin(), s.end());
D. std::reverse(s.start(), s.finish());

Solution

  1. Step 1: Identify correct std::reverse usage

    The std::reverse function requires two iterators: start and end of the range.
  2. Step 2: Match syntax with string iterators

    For string s, s.begin() and s.end() provide correct iterators.
  3. Final Answer:

    std::reverse(s.begin(), s.end()); -> Option A
  4. Quick Check:

    std::reverse needs begin and end iterators [OK]
Hint: Use s.begin() and s.end() with std::reverse [OK]
Common Mistakes:
  • Using incorrect iterator names like start() or finish()
  • Calling reverse without std:: prefix
  • Passing string and indices directly
3. What will be the output of the following C++ code?
std::string s = "hello";
for (int i = 0; i < s.length() / 2; ++i) {
    std::swap(s[i], s[s.length() - 1 - i]);
}
std::cout << s;
medium
A. hello
B. helol
C. olleh
D. error

Solution

  1. Step 1: Understand the swapping loop

    The loop swaps characters from start and end moving towards the center, effectively reversing the string.
  2. Step 2: Trace the swaps on "hello"

    Swap s[0] and s[4]: 'h' and 'o' -> "oellh"; Swap s[1] and s[3]: 'e' and 'l' -> "olleh".
  3. Final Answer:

    olleh -> Option C
  4. Quick Check:

    Swapping pairs reverses string [OK]
Hint: Swapping pairs from ends reverses string [OK]
Common Mistakes:
  • Not swapping correctly causing partial reversal
  • Loop running too many or too few times
  • Confusing indices causing wrong output
4. Identify the error in the following code that attempts to reverse a string s.
for (int i = 0; i <= s.length() / 2; ++i) {
    std::swap(s[i], s[s.length() - i]);
}
medium
A. No error; code correctly reverses the string.
B. The second index should be s.length() - 1 - i instead of s.length() - i to avoid out-of-range access.
C. The loop should start from i = 1 instead of 0.
D. std::swap cannot be used with string characters.

Solution

  1. Step 1: Check the swap indices

    The code uses s[s.length() - i]. For i=0, this accesses s[s.length()], out of bounds.
  2. Step 2: Correct reversal index

    To reverse, swap s[i] with s.length() - 1 - i.
  3. Final Answer:

    The second index should be s.length() - 1 - i instead of s.length() - i to avoid out-of-range access. -> Option B
  4. Quick Check:

    Missing -1 in second index causes out-of-range [OK]
Hint: Check indices carefully to avoid out-of-range errors [OK]
Common Mistakes:
  • Off-by-one error: s.length() - i instead of s.length() - 1 - i
  • Incorrect index calculation for swap
  • Assuming std::swap can't swap chars
5. Given a string s, which approach below correctly reverses the string without using extra space and handles empty strings safely?
hard
A. Use a while loop swapping characters until i > s.length().
B. Use std::reverse(s.begin(), s.end() - 1); to reverse all but last character.
C. Create a new string and append characters from end to start.
D. Use a for loop swapping characters from start to end with condition i < s.length() / 2.

Solution

  1. Step 1: Analyze each approach

    Use a for loop swapping characters from start to end with condition i < s.length() / 2. swaps characters in place up to half length, safe for empty strings. Use std::reverse(s.begin(), s.end() - 1); to reverse all but last character. misses last character. Create a new string and append characters from end to start. uses extra space. Use a while loop swapping characters until i > s.length(). has wrong loop condition.
  2. Step 2: Confirm correctness and safety

    Use a for loop swapping characters from start to end with condition i < s.length() / 2. reverses string in place without extra space and works for empty strings as loop won't run.
  3. Final Answer:

    Use a for loop swapping characters from start to end with condition i < s.length() / 2. -> Option D
  4. Quick Check:

    In-place swap up to half length reverses string safely [OK]
Hint: Swap pairs up to half length for safe in-place reversal [OK]
Common Mistakes:
  • Using incorrect end iterator causing partial reversal
  • Creating new string uses extra space
  • Wrong loop conditions causing infinite loops
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