Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

String Reversal Approaches in DSA Typescript - 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 work grow when the input string size increases?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


function reverseString(str: string): string {
  const chars: string[] = [];
  for (let i = str.length - 1; i >= 0; i--) {
    chars.push(str[i]);
  }
  return chars.join('');
}
    

This code creates a reversed string by appending characters from the end of the input string to an array and then joining them.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Looping through each character of the string once.
  • How many times: Exactly once for each character, from last to first.
How Execution Grows With Input

As the string gets longer, the number of steps grows roughly the same as the string length.

Input Size (n)Approx. Operations
10About 10 steps
100About 100 steps
1000About 1000 steps

Pattern observation: The work grows linearly with the input size.

Final Time Complexity

Time Complexity: O(n)

This means the time to reverse the string grows directly in proportion to the string length.

Common Mistake

[X] Wrong: "Reversing a string is instant or constant time because it's just one operation."

[OK] Correct: Each character must be handled one by one, so the time grows with the string size, not fixed.

Interview Connect

Understanding how string reversal scales helps you reason about similar problems where you process each item once.

Self-Check

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

Practice

(1/5)
1. What does the split('') method do when applied to a string in TypeScript?
easy
A. It reverses the string directly.
B. It converts the string into an array of individual characters.
C. It joins the string elements into one string.
D. It removes all spaces from the string.

Solution

  1. Step 1: Understand the split method

    The split('') method breaks a string into an array of characters by splitting at every empty string between characters.
  2. Step 2: Effect on string

    For example, "hello".split('') becomes ["h", "e", "l", "l", "o"].
  3. Final Answer:

    It converts the string into an array of individual characters. -> Option B
  4. Quick Check:

    split('') = array of chars [OK]
Hint: split('') breaks string into chars array [OK]
Common Mistakes:
  • Thinking split('') reverses the string
  • Confusing split('') with join()
  • Assuming split('') removes spaces
2. Which of the following is the correct syntax to reverse a string str using built-in methods in TypeScript?
easy
A. str.split('').reverse().join('')
B. str.reverse().join('')
C. reverse(str).split('')
D. str.join('').reverse()

Solution

  1. Step 1: Split string into array

    Use str.split('') to convert string into array of characters.
  2. Step 2: Reverse and join

    Use reverse() on array, then join('') to form reversed string.
  3. Final Answer:

    str.split('').reverse().join('') -> Option A
  4. Quick Check:

    split + reverse + join = reversed string [OK]
Hint: Split, reverse array, then join to reverse string [OK]
Common Mistakes:
  • Calling reverse() directly on string
  • Using join() before reverse()
  • Using reverse() as a standalone function
3. What will be the output of the following TypeScript code?
const str = "abcde";
const reversed = str.split('').reverse().join('');
console.log(reversed);
medium
A. "edcbe"
B. "abcde"
C. ""
D. "edcba"

Solution

  1. Step 1: Split string into array

    "abcde".split('') becomes ["a", "b", "c", "d", "e"].
  2. Step 2: Reverse and join array

    Reversing gives ["e", "d", "c", "b", "a"], joining results in "edcba".
  3. Final Answer:

    "edcba" -> Option D
  4. Quick Check:

    split + reverse + join = "edcba" [OK]
Hint: Split, reverse, join outputs reversed string [OK]
Common Mistakes:
  • Expecting original string output
  • Mixing up reversed characters
  • Forgetting to join after reverse
4. Identify the error in this TypeScript function intended to reverse a string:
function reverseString(s: string): string {
  return s.reverse();
}
medium
A. Strings do not have a reverse() method directly.
B. The function should return void, not string.
C. The parameter should be an array, not a string.
D. The function is missing a return statement.

Solution

  1. Step 1: Check string methods

    Strings in TypeScript do not have a reverse() method directly; only arrays do.
  2. Step 2: Correct approach

    Convert string to array with split(''), reverse array, then join back.
  3. Final Answer:

    Strings do not have a reverse() method directly. -> Option A
  4. Quick Check:

    reverse() works on arrays, not strings [OK]
Hint: reverse() is for arrays, not strings [OK]
Common Mistakes:
  • Trying to call reverse() on string directly
  • Ignoring need to split string first
  • Assuming reverse() returns void
5. Given the function below, what will be the output when calling reverseString('12345')?
function reverseString(s: string): string {
  let reversed = '';
  for (let i = s.length - 1; i >= 0; i--) {
    reversed += s[i];
  }
  return reversed;
}
hard
A. "5432"
B. "12345"
C. "54321"
D. ""

Solution

  1. Step 1: Loop from end to start

    The loop starts at index 4 (last char '5') and moves backward to 0.
  2. Step 2: Build reversed string

    Characters are appended in reverse order: '5', '4', '3', '2', '1'.
  3. Final Answer:

    "54321" -> Option C
  4. Quick Check:

    Loop backward concatenates reversed string [OK]
Hint: Loop backward to build reversed string [OK]
Common Mistakes:
  • Looping forward instead of backward
  • Off-by-one errors in loop index
  • Not initializing reversed string properly
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