Bird
Raised Fist0
DSA C++programming~20 mins

String Traversal and Character Access in DSA C++ - 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 C++ code snippet?
DSA C++
std::string s = "hello";
for (int i = 0; i < s.size(); ++i) {
    std::cout << s[i] << "-";
}
Ah-e-l-l-o-
Bhello-
Ch e l l o
Dh-e-l-l-o
Attempts:
2 left
💡 Hint
Remember that s[i] accesses one character at a time and the loop prints a dash after each character.
❓ Predict Output
intermediate
2:00remaining
Accessing characters with at() method
What will be the output of this C++ code?
DSA C++
std::string s = "world";
for (size_t i = 0; i < s.length(); ++i) {
    std::cout << s.at(i);
}
Aw-o-r-l-d
Bw o r l d
Cdlrow
Dworld
Attempts:
2 left
💡 Hint
The at() method returns the character at the given index without extra characters.
❓ Predict Output
advanced
2:30remaining
Output of nested loops with string indexing
What is the output of this C++ code snippet?
DSA C++
std::string s = "abc";
for (int i = 0; i < s.size(); ++i) {
    for (int j = 0; j <= i; ++j) {
        std::cout << s[j];
    }
    std::cout << " ";
}
Aa ab abc
Ba a b abc
Ccba ba a
Da b c
Attempts:
2 left
💡 Hint
The inner loop prints characters from start up to the current outer loop index.
❓ Predict Output
advanced
2:00remaining
Result of modifying characters via indexing
What is the output after running this C++ code?
DSA C++
std::string s = "test";
s[1] = 'a';
s[3] = 'p';
std::cout << s;
Atesp
Btasp
Ctast
Dteap
Attempts:
2 left
💡 Hint
Characters at index 1 and 3 are replaced.
🧠 Conceptual
expert
3:00remaining
Understanding string traversal with iterators
Given the following C++ code, what is the output?
DSA C++
std::string s = "data";
for (auto it = s.begin(); it != s.end(); ++it) {
    if (*it == 'a') {
        std::cout << '*';
    } else {
        std::cout << *it;
    }
}
Adata
Bd*ta
Cd*t*
Dd*at
Attempts:
2 left
💡 Hint
The code replaces every 'a' character with '*'.

Practice

(1/5)
1. What does the expression str[i] do when str is a string in C++?
easy
A. Returns the length of the string
B. Accesses the character at index i in the string
C. Deletes the character at index i
D. Converts the string to uppercase

Solution

  1. Step 1: Understand string indexing in C++

    In C++, strings are like arrays of characters. Using str[i] accesses the character at position i.
  2. Step 2: Clarify what str[i] returns

    The expression returns the character stored at index i without modifying the string.
  3. Final Answer:

    Accesses the character at index i in the string -> Option B
  4. Quick Check:

    str[i] = character at i [OK]
Hint: Remember strings are arrays of chars; indexing gets a character [OK]
Common Mistakes:
  • Thinking it returns string length
  • Assuming it deletes characters
  • Confusing with string case conversion
2. Which of the following is the correct way to loop through each character of a string str in C++?
easy
A. for (int i = 0; i <= str.length(); i++)
B. for (int i = 1; i < str.length(); i++)
C. for (int i = 0; i < str.length(); i++)
D. for (int i = 1; i <= str.length(); i++)

Solution

  1. Step 1: Understand string length and indexing

    String indices start at 0 and go up to str.length() - 1. So loop must run while i < str.length().
  2. Step 2: Check loop conditions

    for (int i = 0; i < str.length(); i++) uses i < str.length() starting from 0, which correctly covers all characters without going out of bounds.
  3. Final Answer:

    for (int i = 0; i < str.length(); i++) -> Option C
  4. Quick Check:

    Loop from 0 to length-1 [OK]
Hint: Loop from 0 to less than length to avoid out-of-bounds [OK]
Common Mistakes:
  • Using <= causes out-of-bounds error
  • Starting loop at 1 misses first character
  • Confusing length with last index
3. What is the output of the following C++ code?
std::string s = "hello";
for (int i = 0; i < s.length(); i++) {
    if (s[i] == 'l') {
        std::cout << i << " ";
    }
}
medium
A. 0 1
B. 1 2
C. 3 4
D. 2 3

Solution

  1. Step 1: Identify characters and their indices

    The string "hello" has characters: h(0), e(1), l(2), l(3), o(4).
  2. Step 2: Check which indices have 'l'

    Characters at indices 2 and 3 are 'l', so those indices are printed.
  3. Final Answer:

    2 3 -> Option D
  4. Quick Check:

    Indices of 'l' = 2 3 [OK]
Hint: Check string indices carefully for matching characters [OK]
Common Mistakes:
  • Confusing character positions
  • Printing characters instead of indices
  • Off-by-one errors in indexing
4. Identify the error in this code snippet that tries to print all characters of a string str:
for (int i = 0; i <= str.length(); i++) {
    std::cout << str[i];
}
medium
A. Using <= causes out-of-bounds access
B. Missing semicolon after for loop
C. str[i] cannot be used to access characters
D. Loop variable should be unsigned

Solution

  1. Step 1: Analyze loop condition

    The loop runs while i <= str.length(), which means it tries to access str[str.length()].
  2. Step 2: Understand string indexing limits

    Valid indices are from 0 to str.length() - 1. Accessing str[str.length()] is out-of-bounds and causes undefined behavior.
  3. Final Answer:

    Using <= causes out-of-bounds access -> Option A
  4. Quick Check:

    Loop must use <, not <= [OK]
Hint: Use < not <= to avoid accessing past string end [OK]
Common Mistakes:
  • Using <= instead of < in loop condition
  • Assuming string length is last index
  • Ignoring out-of-bounds errors
5. Given a string str, how can you create a new string containing only the vowels from str using traversal and character access in C++?
hard
A. Loop through str, check if each character is a vowel, and append it to a new string
B. Use str.substr() to extract vowels directly
C. Replace all consonants with spaces in str
D. Sort the string and pick vowels from the start

Solution

  1. Step 1: Traverse the string character by character

    Use a loop to access each character in str using indexing.
  2. Step 2: Check if character is a vowel and build new string

    If the character is one of 'a', 'e', 'i', 'o', 'u' (case-insensitive), append it to a new string variable.
  3. Step 3: Return or print the new string

    After the loop, the new string contains only vowels from the original string.
  4. Final Answer:

    Loop through str, check if each character is a vowel, and append it to a new string -> Option A
  5. Quick Check:

    Filter vowels by checking each character [OK]
Hint: Check each char; add vowels to new string [OK]
Common Mistakes:
  • Trying to extract vowels without looping
  • Using substr incorrectly
  • Sorting string changes order
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