Bird
Raised Fist0
DSA Typescriptprogramming

String Traversal and Character Access in DSA Typescript

Choose your learning style10 modes available
Mental Model
A string is a sequence of characters you can look at one by one from start to end.
Analogy: Imagine reading a sentence letter by letter from left to right to understand or find something.
"H" -> "e" -> "l" -> "l" -> "o" -> null
 ↑
 current position at first character
Dry Run Walkthrough
Input: string: "Hello", traverse and print each character
Goal: Visit each character in the string one by one and print it
Step 1: Start at first character 'H'
"H" -> "e" -> "l" -> "l" -> "o" -> null
 ↑
Why: We begin reading from the first character
Step 2: Print 'H' and move to next character 'e'
"H" -> "e" -> "l" -> "l" -> "o" -> null
    ↑
Why: After reading one character, move forward to continue
Step 3: Print 'e' and move to next character 'l'
"H" -> "e" -> "l" -> "l" -> "o" -> null
       ↑
Why: Keep moving forward to read all characters
Step 4: Print 'l' and move to next character 'l'
"H" -> "e" -> "l" -> "l" -> "o" -> null
          ↑
Why: Continue until the end of the string
Step 5: Print 'l' and move to next character 'o'
"H" -> "e" -> "l" -> "l" -> "o" -> null
             ↑
Why: Almost at the last character
Step 6: Print 'o' and reach end of string
"H" -> "e" -> "l" -> "l" -> "o" -> null
                ↑
Why: Finished reading all characters
Result:
"H" -> "e" -> "l" -> "l" -> "o" -> null
Printed characters: H e l l o
Annotated Code
DSA Typescript
class StringTraversal {
  static traverseAndPrint(str: string): void {
    for (let i = 0; i < str.length; i++) {
      console.log(str[i]); // print current character
    }
  }
}

// Driver code
const inputString = "Hello";
StringTraversal.traverseAndPrint(inputString);
for (let i = 0; i < str.length; i++) {
loop through each character index from start to end
console.log(str[i]); // print current character
access and print character at current index
OutputSuccess
H e l l o
Complexity Analysis
Time: O(n) because we visit each character once where n is string length
Space: O(1) because we only use a few variables regardless of string size
vs Alternative: Compared to recursive traversal, this iterative approach uses less memory and is simpler
Edge Cases
empty string ""
loop does not run, nothing is printed
DSA Typescript
for (let i = 0; i < str.length; i++) {
string with one character "A"
prints single character 'A' once
DSA Typescript
for (let i = 0; i < str.length; i++) {
When to Use This Pattern
When you need to process or examine each character in a string one by one, use string traversal with indexing.
Common Mistakes
Mistake: Using <= in loop condition causing out-of-bounds access
Fix: Use < operator to stop before string length
Mistake: Trying to modify string characters directly (strings are immutable)
Fix: Use a new string or array to build modified results
Summary
It visits each character in a string one by one to read or process it.
Use it when you want to check or use every character in a string.
Remember strings are like arrays of letters you can access by position.

Practice

(1/5)
1. What does the expression str[2] return when str = "hello"?
easy
A. The character 'e'
B. The character 'l'
C. The substring 'll'
D. An error because strings are not indexable

Solution

  1. Step 1: Understand string indexing

    Strings in TypeScript can be accessed by index starting at 0, so index 2 refers to the third character.
  2. Step 2: Identify the character at index 2 in "hello"

    The characters are: h(0), e(1), l(2), l(3), o(4). So index 2 is 'l'.
  3. Final Answer:

    The character 'l' -> Option B
  4. Quick Check:

    str[2] = 'l' [OK]
Hint: Remember string index starts at 0 [OK]
Common Mistakes:
  • Thinking index starts at 1
  • Confusing character with substring
  • Assuming strings are not indexable
2. Which of the following is the correct way to loop through each character of a string text in TypeScript?
easy
A. for (let char of text) { console.log(char); }
B. for (let char in text) { console.log(char); }
C. for (let i = 0; i <= text.length; i++) { console.log(text[i]); }
D. for (let i = 1; i <= text.length; i++) { console.log(text[i]); }

Solution

  1. Step 1: Understand looping over strings

    Using for...of loops over characters directly, which is the cleanest way.
  2. Step 2: Evaluate the options

    The index-based loop using <= text.length causes an out-of-bounds access. for...in iterates over string indices ('0', '1', etc.) rather than characters. for...of correctly iterates over characters. Starting the index at 1 skips the first character and risks out-of-bounds.
  3. Final Answer:

    for (let char of text) { console.log(char); } -> Option A
  4. Quick Check:

    Use for...of to access characters directly [OK]
Hint: Use for...of to loop characters directly [OK]
Common Mistakes:
  • Using for...in which loops keys, not values
  • Starting index at 1 instead of 0
  • Confusing index with character in loops
3. What is the output of the following code?
const s = "abcde";
let result = "";
for (let i = 0; i < s.length; i += 2) {
  result += s[i];
}
console.log(result);
medium
A. "bdf"
B. ""
C. "abcde"
D. "ace"

Solution

  1. Step 1: Analyze the loop increments and indexing

    The loop starts at 0 and increments by 2 each time, so indexes are 0, 2, 4.
  2. Step 2: Collect characters at indexes 0, 2, 4

    Characters are s[0] = 'a', s[2] = 'c', s[4] = 'e'. Concatenated result is "ace".
  3. Final Answer:

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

    Indexes 0,2,4 characters combined = "ace" [OK]
Hint: Check loop step size and indexes accessed [OK]
Common Mistakes:
  • Assuming loop increments by 1
  • Confusing indexes with characters
  • Expecting all characters concatenated
4. Identify the error in the following code snippet that tries to print each character of word:
const word = "test";
for (let i = 1; i <= word.length; i++) {
  console.log(word[i]);
}
medium
A. Missing declaration of variable i
B. Using <= instead of < causes infinite loop
C. Indexing starts at 1, skipping first character and causing undefined at end
D. Strings cannot be accessed by index in TypeScript

Solution

  1. Step 1: Check loop index range

    The loop starts at 1 and goes up to word.length (4), so indexes accessed are 1,2,3,4.
  2. Step 2: Identify indexing issues

    Index 0 is skipped (first character 't'), and index 4 is out of bounds (undefined). So first character is missed and last access is invalid.
  3. Final Answer:

    Indexing starts at 1, skipping first character and causing undefined at end -> Option C
  4. Quick Check:

    String indexes start at 0, not 1 [OK]
Hint: Loop indexes for strings start at 0 and go to length-1 [OK]
Common Mistakes:
  • Starting loop at 1 instead of 0
  • Using <= instead of < in loop condition
  • Assuming strings are not indexable
5. Given a string input, which code snippet correctly reverses the string by traversing it from end to start?
hard
A. let rev = ''; for (let i = input.length - 1; i >= 0; i--) { rev += input[i]; } console.log(rev);
B. let rev = ''; for (let i = 0; i < input.length; i++) { rev += input[input.length - i]; } console.log(rev);
C. let rev = ''; for (let i = input.length; i > 0; i--) { rev += input[i]; } console.log(rev);
D. let rev = ''; for (let i = input.length; i >= 0; i--) { rev += input[i]; } console.log(rev);

Solution

  1. Step 1: Understand correct index range for reverse traversal

    Indexes go from input.length - 1 down to 0 inclusive to cover all characters in reverse.
  2. Step 2: Verify the index ranges

    Looping from input.length - 1 down to 0 inclusive correctly captures all characters in reverse. A forward loop using input.length - i first accesses an out-of-bounds index. Starting at input.length immediately accesses invalid index. Decrementing from input.length to 0 also starts with out-of-bounds.
  3. Final Answer:

    let rev = ''; for (let i = input.length - 1; i >= 0; i--) { rev += input[i]; } console.log(rev); -> Option A
  4. Quick Check:

    Loop from length-1 down to 0 for reverse traversal [OK]
Hint: Start loop at length-1 and go down to 0 [OK]
Common Mistakes:
  • Starting loop at length instead of length-1
  • Using wrong index inside loop causing undefined
  • Loop condition off by one causing missing characters
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