Bird
Raised Fist0
DSA Cprogramming~30 mins

String Reversal Approaches in DSA C - Build from Scratch

Choose your learning style10 modes available
String Reversal Approaches
📖 Scenario: Imagine you are working on a simple text editor that needs to reverse words typed by the user. Reversing strings is a common task in many programs, such as creating palindromes or encoding messages.
🎯 Goal: Build a C program that reverses a given string using a character array and a loop.
📋 What You'll Learn
Create a character array with a specific string
Create an integer variable to hold the string length
Use a for loop to reverse the string into a new array
Print the reversed string
💡 Why This Matters
🌍 Real World
Reversing strings is useful in text processing, coding challenges, and creating palindromes or encryption.
💼 Career
Understanding string manipulation is fundamental for software developers, especially in areas like data processing, algorithms, and system programming.
Progress0 / 4 steps
1
Create the original string
Create a character array called original and initialize it with the exact string "hello".
DSA C
Hint

Use double quotes to create a string in C.

2
Calculate the string length
Create an integer variable called length and set it to the length of original using strlen(original). Include #include <string.h> at the top.
DSA C
Hint

Remember to include the string library to use strlen.

3
Reverse the string using a loop
Create a character array called reversed with size length + 1. Use a for loop with variable i from 0 to length - 1 to copy characters from original[length - 1 - i] to reversed[i]. After the loop, set reversed[length] to '\0' to end the string.
DSA C
Hint

Remember to add the null character at the end of the reversed string.

4
Print the reversed string
Use printf to print the string reversed.
DSA C
Hint

Use printf("%s\n", reversed); to print the reversed string.

Practice

(1/5)
1. What does the string reversal operation do to the string "hello"?
easy
A. It changes it to "olleh"
B. It changes it to "hello" (no change)
C. It removes all vowels
D. It converts all letters to uppercase

Solution

  1. Step 1: Understand string reversal

    Reversing a string means writing its characters in the opposite order.
  2. Step 2: Apply reversal to "hello"

    The characters 'h', 'e', 'l', 'l', 'o' become 'o', 'l', 'l', 'e', 'h'.
  3. Final Answer:

    "olleh" -> Option A
  4. Quick Check:

    Reverse("hello") = "olleh" [OK]
Hint: Reverse means flip characters order [OK]
Common Mistakes:
  • Thinking reversal changes letters, not order
  • Confusing reversal with uppercase conversion
  • Assuming reversal removes characters
2. Which of the following C code snippets correctly reverses a string str in place?
easy
A. for(int i = 0; i < strlen(str)/2; i++) { char temp = str[i]; str[i] = str[strlen(str)-1-i]; str[strlen(str)-1-i] = temp; }
B. for(int i = 0; i < strlen(str); i++) { str[i] = str[strlen(str)-1-i]; }
C. strrev(str);
D. for(int i = 0; i < strlen(str); i++) { str[i] = toupper(str[i]); }

Solution

  1. Step 1: Understand in-place reversal logic

    Swap characters from start and end moving towards center, stopping at half length.
  2. Step 2: Analyze for(int i = 0; i < strlen(str)/2; i++) { char temp = str[i]; str[i] = str[strlen(str)-1-i]; str[strlen(str)-1-i] = temp; }

    It swaps str[i] with str[length-1-i] for i from 0 to half length, correctly reversing the string.
  3. Final Answer:

    Option A code correctly reverses string in place -> Option A
  4. Quick Check:

    Swapping pairs from ends reverses string [OK]
Hint: Swap pairs from ends to middle [OK]
Common Mistakes:
  • Overwriting characters without swapping
  • Using full length instead of half length in loop
  • Confusing string reversal with uppercase conversion
3. What is the output of the following C code?
char str[] = "abcde";
int i = 0, j = 4;
while(i < j) {
  char temp = str[i];
  str[i] = str[j];
  str[j] = temp;
  i++;
  j--;
}
printf("%s", str);
medium
A. abcde
B. Error: infinite loop
C. edcde
D. edcba

Solution

  1. Step 1: Trace the while loop swaps

    Swap str[0] and str[4]: 'a' and 'e' -> str = "ebcda"; i=1, j=3 Swap str[1] and str[3]: 'b' and 'd' -> str = "edcba"; i=2, j=2 Loop ends as i == j.
  2. Step 2: Print the reversed string

    After swaps, str is "edcba" which is printed.
  3. Final Answer:

    edcba -> Option D
  4. Quick Check:

    Swapped pairs reverse string [OK]
Hint: Swapping ends moves characters inward [OK]
Common Mistakes:
  • Not updating i and j correctly
  • Confusing loop condition causing infinite loop
  • Printing original string without reversal
4. Identify the error in this C code that attempts to reverse a string str:
int len = strlen(str);
for(int i = 0; i <= len/2; i++) {
  char temp = str[i];
  str[i] = str[len - i];
  str[len - i] = temp;
}
medium
A. Loop condition should be i < len/2 not <=.
B. Missing null terminator assignment after reversal.
C. Index len - i is out of bounds; should be len - i - 1.
D. Using strlen inside loop causes performance issue.

Solution

  1. Step 1: Check index usage in swapping

    String indices go from 0 to len-1. Using str[len - i] accesses one past last character (out of bounds).
  2. Step 2: Correct index to len - i - 1

    Adjusting index fixes out-of-bounds error and correctly swaps characters.
  3. Final Answer:

    Index len - i is out of bounds; should be len - i - 1 -> Option C
  4. Quick Check:

    String last index = len-1, not len [OK]
Hint: String last index = length - 1 [OK]
Common Mistakes:
  • Using length as index directly
  • Loop running one extra iteration
  • Ignoring null terminator position
5. You want to reverse only the vowels in a string "education" using C. Which approach correctly achieves this?
hard
A. Reverse entire string and then remove consonants.
B. Use two pointers from start and end, swap vowels only, skip consonants.
C. Copy vowels to a new string and print it reversed.
D. Replace vowels with uppercase letters in place.

Solution

  1. Step 1: Understand vowel-only reversal

    We must swap vowels at start and end positions, ignoring consonants.
  2. Step 2: Use two pointers approach

    Initialize pointers at string start and end, move inward skipping consonants, swap vowels when both pointers point to vowels.
  3. Step 3: Confirm other options are incorrect

    Reverse entire string and then remove consonants. reverses whole string, not vowels only. Copy vowels to a new string and print it reversed. prints vowels only, losing consonants. Replace vowels with uppercase letters in place. changes vowels but does not reverse.
  4. Final Answer:

    Two pointers swapping vowels only -> Option B
  5. Quick Check:

    Two-pointer vowel swap reverses vowels [OK]
Hint: Swap vowels with two pointers, skip consonants [OK]
Common Mistakes:
  • Reversing entire string instead of vowels only
  • Removing consonants accidentally
  • Changing vowels without reversing
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