String Basics and Memory Representation in DSA Python - Time & Space Complexity
We want to understand how the time to work with strings changes as the string gets longer.
Specifically, how operations like reading or copying a string take more time with bigger strings.
Analyze the time complexity of the following code snippet.
text = "hello world"
new_text = ""
for char in text:
new_text += char
print(new_text)
This code copies each character from one string to another by adding characters one by one.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Looping through each character in the string.
- How many times: Once for every character in the original string (n times).
As the string gets longer, the time to copy it grows faster than just the length.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 55 operations |
| 100 | About 5050 operations |
| 1000 | About 500500 operations |
Pattern observation: The operations grow roughly with the square of the string length.
Time Complexity: O(n²)
This means copying a string by adding characters one by one takes much more time as the string grows, roughly the square of its length.
[X] Wrong: "Adding characters one by one to a string is always fast and takes time proportional to the string length (O(n))."
[OK] Correct: Each time you add a character, a new string is created copying all previous characters, so the total work adds up to much more than just n.
Understanding how string operations cost time helps you write efficient code and explain your choices clearly in interviews.
"What if we used a list to collect characters and joined them at the end? How would the time complexity change?"
Practice
Solution
Step 1: Understand string mutability in Python
Python strings cannot be changed after they are created. Any modification creates a new string.Step 2: Analyze other options
Strings are not mutable, not stored as linked lists, and use variable bytes depending on encoding.Final Answer:
Strings are immutable, meaning they cannot be changed after creation. -> Option BQuick Check:
Strings are immutable [OK]
- Thinking strings can be changed in place
- Assuming fixed byte size per character
- Confusing string storage with lists
Solution
Step 1: Check string syntax rules
Strings must be enclosed in matching single or double quotes.Step 2: Validate each option
str = 'Hello World' uses matching single quotes correctly. Options B, C, and D have missing or mismatched quotes causing syntax errors.Final Answer:
str = 'Hello World' -> Option AQuick Check:
Matching quotes create strings correctly [OK]
- Forgetting quotes around string text
- Using mismatched quotes
- Confusing string with variable names
text = 'abc' print(id(text)) text += 'd' print(id(text))
Solution
Step 1: Understand string immutability and id()
Strings are immutable, so adding 'd' creates a new string object with a new id.Step 2: Trace the code output
First print shows id of 'abc', second print shows id of new string 'abcd', which is different.Final Answer:
Two different numbers printed -> Option AQuick Check:
String immutability changes id after modification [OK]
- Assuming string id stays same after += operation
- Confusing id() with value
- Expecting syntax or runtime errors here
my_str = 'hello' my_str[0] = 'H' print(my_str)
Solution
Step 1: Identify string mutability rules
Strings cannot be changed by assigning to an index because they are immutable.Step 2: Analyze the error raised
Assigning to my_str[0] causes a TypeError about item assignment not supported.Final Answer:
TypeError: 'str' object does not support item assignment -> Option CQuick Check:
Immutable strings cause TypeError on index assignment [OK]
- Expecting string to change after index assignment
- Thinking code runs without error
- Confusing TypeError with SyntaxError
str1 = 'abc' str2 = 'abc' print(str1 is str2) str3 = ''.join(['a', 'b', 'c']) print(str1 is str3)
Solution
Step 1: Understand string interning for literals
Python reuses the same object for identical string literals, so str1 and str2 point to the same object.Step 2: Understand string creation with join()
str3 is created at runtime and is a new object, so str1 is not str3.Final Answer:
True\nFalse -> Option DQuick Check:
Literal strings share object, runtime strings do not [OK]
- Assuming all identical strings share same object
- Confusing 'is' with '=='
- Ignoring how strings are created
Ready to prove it?
Pass the test and this pattern moves unknown
