Bird
Raised Fist0
DSA Cprogramming~5 mins

String Reversal Approaches in DSA C - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: String Reversal Approaches
O(n)
Understanding Time Complexity

We want to understand how the time needed to reverse a string changes as the string gets longer.

How does the number of steps grow when the string size grows?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


void reverseString(char* str) {
    int start = 0;
    int end = strlen(str) - 1;
    while (start < end) {
        char temp = str[start];
        str[start] = str[end];
        str[end] = temp;
        start++;
        end--;
    }
}
    

This code reverses a string in place by swapping characters from the start and end moving towards the center.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Swapping two characters inside a loop.
  • How many times: About half the length of the string (n/2 times).
How Execution Grows With Input

As the string gets longer, the number of swaps grows roughly in direct proportion to its length.

Input Size (n)Approx. Operations
105 swaps
10050 swaps
1000500 swaps

Pattern observation: Doubling the string length roughly doubles the number of swaps.

Final Time Complexity

Time Complexity: O(n)

This means the time to reverse the string grows linearly with the string length.

Common Mistake

[X] Wrong: "Reversing a string takes constant time because we just swap characters."

[OK] Correct: Each character must be visited and swapped, so the time grows with the string size, not fixed.

Interview Connect

Understanding how simple loops scale helps you explain your code clearly and shows you know how to reason about efficiency.

Self-Check

"What if we used recursion to reverse the string? How would the time complexity change?"

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