Common string transformations in Python - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When we change strings by making them uppercase, lowercase, or replacing parts, the time it takes depends on the string's length.
We want to know how the work grows as the string gets longer.
Analyze the time complexity of the following code snippet.
text = "Hello World"
upper_text = text.upper()
lower_text = text.lower()
replaced_text = text.replace('o', '0')
trimmed_text = text.strip()
This code changes a string to uppercase, lowercase, replaces characters, and removes spaces from the ends.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Going through each character in the string to change or check it.
- How many times: Once for each character in the string for each transformation.
As the string gets longer, the time to change it grows in a straight line with the number of characters.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 operations per transformation |
| 100 | About 100 operations per transformation |
| 1000 | About 1000 operations per transformation |
Pattern observation: The work grows evenly as the string length grows.
Time Complexity: O(n)
This means the time to do these string changes grows directly with the string length.
[X] Wrong: "Changing a string's case or replacing characters is instant and does not depend on string size."
[OK] Correct: Each character must be checked or changed, so longer strings take more time.
Understanding how string operations grow with size helps you write clear and efficient code, a skill valued in many coding challenges and real projects.
"What if we used a method that only changes the first character of the string? How would the time complexity change?"
Practice
text = "hello world"Solution
Step 1: Understand the purpose of each method
upper() converts all letters to uppercase, lower() to lowercase, strip() removes spaces, replace() changes parts of the string.Step 2: Identify the method that changes all letters to uppercase
upper() is the method that does this.Final Answer:
text.upper() -> Option AQuick Check:
upper() = text.upper() [OK]
- Confusing upper() with lower()
- Using strip() to change case
- Trying replace() without arguments
text?Solution
Step 1: Recall Python string methods for trimming spaces
Python uses strip() to remove whitespace from both ends of a string.Step 2: Check the options for correct method name
trim(), remove(), and cut() are not valid Python string methods.Final Answer:
text.strip() -> Option AQuick Check:
strip() = text.strip() [OK]
- Using trim() which is not a Python method
- Trying remove() or cut() which don't exist
- Confusing strip() with replace()
text = "apple,banana,cherry"
result = text.split(",")
print(result)Solution
Step 1: Understand split() method with comma separator
split(",") breaks the string at each comma, creating a list of parts.Step 2: Apply split to the string
Splitting "apple,banana,cherry" by comma gives ['apple', 'banana', 'cherry'].Final Answer:
['apple', 'banana', 'cherry'] -> Option DQuick Check:
split(",") = list of words [OK]
- Expecting a string instead of list
- Using split() without argument
- Confusing split() with join()
text. What is the error?text = "hello world"
text.replace(" ", "-")
print(text)Solution
Step 1: Understand string immutability in Python
Strings cannot be changed in place; methods like replace() return a new string.Step 2: Check code behavior
text.replace(" ", "-") returns new string but original text remains unchanged because result is not assigned.Final Answer:
Output is 'hello world' because replace() does not change original string -> Option CQuick Check:
replace() returns new string, assign it [OK]
- Not assigning replace() result
- Expecting replace() to modify string in place
- Confusing syntax errors with logic errors
words = [' apple', 'Banana ', ' CHERRY ']. Which code correctly creates a new list with all words trimmed and in lowercase?Solution
Step 1: Understand the order of strip() and lower()
strip() removes spaces, lower() converts to lowercase. Order doesn't matter here since they don't interfere.Step 2: Analyze each option
A concatenates strip() result with lower() result, doubling content. B calls lower() then references .strip without (), yielding method objects. C chains strip().lower() correctly. D calls strip() on list, causing AttributeError.Final Answer:
[word.strip().lower() for word in words] -> Option BQuick Check:
List comprehension with strip() and lower() [OK]
- Concatenating strings instead of chaining methods
- Calling strip() on list
- Forgetting parentheses on strip()
