Bird
Raised Fist0
DSA Typescriptprogramming~20 mins

String Traversal and Character Access in DSA Typescript - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
String Traversal Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of character access in a loop
What is the output of the following TypeScript code that traverses a string and prints each character with its index?
DSA Typescript
const str = "hello";
for (let i = 0; i < str.length; i++) {
  console.log(i + ":" + str[i]);
}
A
0:h
1:e
2:l
3:l
4:o
B
h:0
e:1
l:2
l:3
o:4
Chello
D
0:h
1:e
2:l
3:o
4:l
Attempts:
2 left
💡 Hint
Remember that str[i] accesses the character at index i, and i is the index number.
❓ Predict Output
intermediate
2:00remaining
Output of string traversal with conditional character check
What is the output of this TypeScript code that prints only vowels from the string?
DSA Typescript
const text = "typescript";
for (let i = 0; i < text.length; i++) {
  if ('aeiou'.includes(text[i])) {
    console.log(text[i]);
  }
}
A
a
e
i
B
y
i
C
i
u
D
e
i
Attempts:
2 left
💡 Hint
Check which characters in "typescript" are vowels (a, e, i, o, u).
🔧 Debug
advanced
2:00remaining
Identify the error in string traversal code
What error does this TypeScript code produce when trying to print each character of a string?
DSA Typescript
const s = "debug";
for (let i = 0; i <= s.length; i++) {
  console.log(s[i]);
}
Aundefined printed on last iteration
BSyntaxError: Unexpected token
CTypeError: s is not iterable
DRangeError: Index out of bounds
Attempts:
2 left
💡 Hint
Check the loop condition and what happens when i equals s.length.
🧠 Conceptual
advanced
1:30remaining
Understanding string immutability in traversal
Why can't you change characters of a string directly by index in TypeScript during traversal?
ATypeScript does not support string indexing
BStrings are immutable; characters cannot be changed by index
CStrings are arrays and can be changed by index
DYou must use a special method to change characters by index
Attempts:
2 left
💡 Hint
Think about whether strings can be changed after creation.
🚀 Application
expert
3:00remaining
Find the first repeated character in a string
Given the string "swiss", what is the first character that repeats when traversing from left to right?
DSA Typescript
const word = "swiss";
const seen = new Set<string>();
let repeated = '';
for (let i = 0; i < word.length; i++) {
  if (seen.has(word[i])) {
    repeated = word[i];
    break;
  }
  seen.add(word[i]);
}
console.log(repeated);
Ai
Bw
Cs
DNo repeated character
Attempts:
2 left
💡 Hint
Track characters seen and find the first one that appears again.

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