Bird
Raised Fist0
DSA C++programming~5 mins

String Traversal and Character Access in DSA C++ - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: String Traversal and Character Access
O(n)
Understanding Time Complexity

We want to understand how long it takes to look at each letter in a word or sentence.

How does the time grow when the word gets longer?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


#include <iostream>
#include <string>

void printChars(const std::string &s) {
    for (size_t i = 0; i < s.length(); ++i) {
        std::cout << s[i] << ' ';
    }
    std::cout << std::endl;
}

This code goes through each character in a string and prints it one by one.

Identify Repeating Operations
  • Primary operation: Accessing each character in the string one by one.
  • How many times: Exactly once for each character in the string.
How Execution Grows With Input

As the string gets longer, the number of steps grows in the same way.

Input Size (n)Approx. Operations
1010 character accesses
100100 character accesses
10001000 character accesses

Pattern observation: The steps increase directly with the number of characters.

Final Time Complexity

Time Complexity: O(n)

This means the time to finish grows in a straight line with the string length.

Common Mistake

[X] Wrong: "Accessing characters inside a string is instant and does not depend on string length."

[OK] Correct: Even though each access is quick, you must do it for every character, so total time grows with string size.

Interview Connect

Knowing how string traversal time grows helps you explain and write efficient code when working with text data.

Self-Check

"What if we used a while loop with an iterator instead of indexing? How would the time complexity change?"

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