Common string methods in C Sharp (C#) - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When we use common string methods, it is important to know how the time to run them changes as the string gets longer.
We want to understand how the work done grows when the input string size grows.
Analyze the time complexity of the following code snippet.
string input = "hello world";
string upper = input.ToUpper();
int index = input.IndexOf('o');
string sub = input.Substring(0, 5);
bool contains = input.Contains("wor");
This code uses common string methods to change case, find a character, get a part of the string, and check if a substring exists.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Each method scans or processes characters in the string.
- How many times: Usually once over the string or part of it.
As the string gets longer, these methods take more time roughly proportional to the string length.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 steps |
| 100 | About 100 steps |
| 1000 | About 1000 steps |
Pattern observation: The work grows in a straight line with the string size.
Time Complexity: O(n)
This means the time to run these string methods grows directly with the length of the string.
[X] Wrong: "String methods always run instantly no matter the string size."
[OK] Correct: Actually, many string methods look at each character, so longer strings take more time.
Knowing how string methods scale helps you write efficient code and explain your choices clearly in interviews.
"What if we used a method that compares two strings character by character? How would the time complexity change if the strings are very long?"
Practice
Solution
Step 1: Understand the purpose of ToUpper()
The ToUpper() method converts all letters in a string to uppercase and returns a new string.Step 2: Compare with other methods
Trim() removes spaces, Contains() checks for substring presence, Substring() extracts part of the string.Final Answer:
ToUpper() -> Option DQuick Check:
Uppercase conversion = ToUpper() [OK]
- Confusing ToUpper() with ToLower()
- Using Trim() to change case
- Thinking Contains() changes text
text contains the word "hello"?Solution
Step 1: Recall the correct method call syntax
In C#, to check if a string contains another, use the instance method with parentheses: text.Contains("hello").Step 2: Identify incorrect syntax
Assignments (=) or wrong method names like Has() are invalid for this check.Final Answer:
text.Contains("hello") -> Option CQuick Check:
Method call with parentheses = Contains() [OK]
- Using assignment instead of method call
- Wrong method name like Has()
- Passing parameters incorrectly
string s = " Hello World "; string result = s.Trim().Substring(0, 5); Console.WriteLine(result);
Solution
Step 1: Apply Trim() method
Trim() removes spaces at the start and end, so " Hello World " becomes "Hello World".Step 2: Apply Substring(0, 5)
Substring(0, 5) extracts characters from index 0 to 4, which is "Hello".Final Answer:
"Hello" -> Option BQuick Check:
Trim + Substring(0,5) = "Hello" [OK]
- Not trimming before substring
- Counting spaces in substring
- Confusing substring length
string s = "Example";
if(s.Contains("ex"))
{
Console.WriteLine("Found");
}Solution
Step 1: Check Contains() behavior
Contains() is case-sensitive, so "ex" does not match "Ex" in "Example".Step 2: Verify syntax correctness
Semicolons and method calls are correct; no syntax errors present.Final Answer:
Contains() is case-sensitive, so "ex" won't match "Ex" -> Option AQuick Check:
Contains() case matters = true [OK]
- Assuming Contains() ignores case
- Looking for syntax errors that don't exist
- Confusing method availability
email = "user@example.com". Which code correctly extracts "example" using common string methods?Solution
Step 1: Find position after '@'
email.IndexOf('@') finds the '@' position; adding 1 moves to start of domain.Step 2: Extract substring from domain start and split by '.'
Substring gets "example.com", then Split('.')[0] gets "example".Step 3: Check other options
B changes case, C returns bool, D extracts wrong part before '@'.Final Answer:
string domain = email.Substring(email.IndexOf('@') + 1).Split('.')[0]; -> Option AQuick Check:
Extract domain by substring + split = string domain = email.Substring(email.IndexOf('@') + 1).Split('.')[0]; [OK]
- Using Contains() instead of extracting
- Trimming or changing case wrongly
- Extracting before '@' instead of after
