String type behavior in Typescript - Time & Space Complexity
We want to understand how the time to work with strings changes as the string gets longer.
How does the length of a string affect the time it takes to do common operations?
Analyze the time complexity of the following code snippet.
function countChars(str: string, charToCount: string): number {
let count = 0;
for (let i = 0; i < str.length; i++) {
if (str[i] === charToCount) {
count++;
}
}
return count;
}
This code counts how many times a specific character appears in a string.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Looping through each character of the string once.
- How many times: Exactly once for each character in the string (str.length times).
As the string gets longer, the time to count characters grows in a straight line.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 checks |
| 100 | 100 checks |
| 1000 | 1000 checks |
Pattern observation: Doubling the string length doubles the work needed.
Time Complexity: O(n)
This means the time to count characters grows directly with the string length.
[X] Wrong: "Accessing a character in a string is slow and adds extra loops."
[OK] Correct: Accessing a character by index is fast and does not add loops; the main time is from the single loop over the string.
Understanding how string operations scale helps you write efficient code and explain your reasoning clearly in interviews.
"What if we searched for a substring instead of a single character? How would the time complexity change?"
Practice
Solution
Step 1: Understand TypeScript string type declaration
In TypeScript, to declare a string variable, uselet variableName: string = value;where value is text in quotes.Step 2: Check each option's type and value
let name: string = "Alice"; usesstringtype and assigns a text value "Alice" correctly. Others assign wrong types or values.Final Answer:
let name: string = "Alice"; -> Option AQuick Check:
Correct string declaration = let name: string = "Alice"; [OK]
- Assigning number or boolean to string type
- Missing type annotation when required
- Using wrong quotes for strings
Solution
Step 1: Identify template string syntax
Template strings use backticks`and allow embedding variables with${variable}.Step 2: Check each option's quotes and variable embedding
let greeting = `Hello, ${name}!`; correctly uses backticks and ${name} syntax. Options A and C use single or double quotes which do not support variable embedding. let greeting = Hello, ${name}!; misses quotes entirely.Final Answer:
let greeting = `Hello, ${name}!`; -> Option AQuick Check:
Template strings use backticks = let greeting = `Hello, ${name}!`; [OK]
- Using single or double quotes for templates
- Forgetting backticks
- Not wrapping string in quotes
const text: string = "Hello World"; console.log(text.length);
Solution
Step 1: Understand string length property
Thelengthproperty returns the number of characters in the string, including spaces.Step 2: Count characters in "Hello World"
"Hello World" has 11 characters: 5 letters + 1 space + 5 letters.Final Answer:
11 -> Option BQuick Check:
"Hello World" length = 11 [OK]
- Ignoring spaces in length count
- Confusing length with last index
- Expecting syntax error
let message: string = 'Hello'; message.toUppercase();
Solution
Step 1: Check method name spelling
The correct method to convert string to uppercase istoUpperCase()with capital 'C'.Step 2: Identify error cause
UsingtoUppercase()(lowercase 'c') causes a runtime error because the method does not exist.Final Answer:
Method name should be toUpperCase() with capital C -> Option CQuick Check:
Correct method spelling = Method name should be toUpperCase() with capital C [OK]
- Using wrong case in method names
- Assuming strings lack case methods
- Ignoring runtime errors
const name: string = "Anna";
const reversed = name.split("").reverse().join("");
console.log(reversed === name);Solution
Step 1: Understand string reversal steps
The code splits the string into characters, reverses the array, then joins back to a string.Step 2: Compare reversed string with original
It checks if the reversed string equals the original string, which means the string reads the same forwards and backwards.Final Answer:
If the string is a palindrome (same forwards and backwards) -> Option DQuick Check:
Reversed equals original means palindrome = If the string is a palindrome (same forwards and backwards) [OK]
- Confusing palindrome with empty string
- Thinking it checks string length or letters
- Missing split-reverse-join logic
Ready to prove it?
Pass the test and this pattern moves unknown
