What does the problem 'Count Words with Given Prefix' ask you to do?
It asks you to find how many words in a list start with a specific prefix.
Click to reveal answer
intermediate
Why is a Trie (prefix tree) useful for counting words with a given prefix?
A Trie stores words so that common prefixes share nodes, making it fast to count how many words start with a prefix by traversing the prefix path.
Click to reveal answer
beginner
In simple terms, how do you count words with a prefix using a loop?
Check each word one by one and count it if it starts with the prefix.
Click to reveal answer
beginner
What TypeScript string method helps check if a word starts with a prefix?
The method is startsWith(), which returns true if the string begins with the given prefix.
Click to reveal answer
intermediate
What is the time complexity of counting words with a prefix by checking each word individually?
It is O(n * m), where n is the number of words and m is the length of the prefix, because each word is checked against the prefix.
Click to reveal answer
Which TypeScript method checks if a string starts with a specific prefix?
AstartsWith()
Bincludes()
CendsWith()
Dsubstring()
✗ Incorrect
The startsWith() method returns true if the string begins with the given prefix.
What data structure is best for efficiently counting words with a common prefix?
ATrie
BStack
CQueue
DLinked List
✗ Incorrect
A Trie stores words by their prefixes, allowing fast prefix counting.
If you have 1000 words and a prefix of length 3, what is the rough time complexity to count words with that prefix by checking each word?
AO(1000)
BO(3)
CO(1000 * 3)
DO(1)
✗ Incorrect
You check each of the 1000 words against the prefix of length 3, so O(n * m).
What will the output be after counting words with prefix 'app' in ['apple', 'app', 'banana', 'application']?
A1
B3
C2
D4
✗ Incorrect
'apple', 'app', and 'application' all start with 'app', so count is 3.
Which of these is NOT a good way to count words with a prefix?
AUsing a Trie
BChecking each word with startsWith()
CSorting words and binary searching prefix
DUsing a stack to store words
✗ Incorrect
A stack does not help with prefix counting.
Explain how you would count the number of words starting with a given prefix using a simple loop.
Think about checking each word one by one.
You got /3 concepts.
Describe why a Trie is efficient for counting words with a given prefix compared to checking each word individually.
Imagine a tree where common beginnings are stored once.
You got /3 concepts.
Practice
(1/5)
1. What does the function countWordsStartingWith(words: string[], prefix: string): number do in the context of counting words with a given prefix?
easy
A. Counts the total number of characters in all words
B. Counts how many words contain the prefix anywhere inside
C. Counts how many words in the list start with the given prefix
D. Returns the longest word starting with the prefix
Solution
Step 1: Understand the function purpose
The function is designed to count words that begin with a specific prefix, not just contain it anywhere.
Step 2: Compare options with function goal
Only Counts how many words in the list start with the given prefix matches the goal of counting words starting exactly with the prefix.
Final Answer:
Counts how many words in the list start with the given prefix -> Option C
Quick Check:
Counting words starting with prefix = Counts how many words in the list start with the given prefix [OK]
Hint: Look for words starting exactly with prefix, not containing it [OK]
Common Mistakes:
Confusing 'start with' and 'contain' prefix
Thinking it returns words instead of count
Assuming it counts characters, not words
2. Which of the following TypeScript code snippets correctly counts words starting with a prefix pre in an array words?
easy
A. words.filter(word => word.startsWith(pre)).length
B. words.map(word => word.startsWith(pre)).length
C. words.reduce((count, word) => count + word.includes(pre), 0)
D. words.forEach(word => word.startsWith(pre))
Solution
Step 1: Identify correct method to filter words
The filter method returns an array of words starting with the prefix, then length counts them.
Step 2: Check other options for correctness
words.map(word => word.startsWith(pre)).length returns an array of booleans, so length is total words, not count of matches. words.reduce((count, word) => count + word.includes(pre), 0) uses includes incorrectly and sums booleans without conversion. words.forEach(word => word.startsWith(pre)) does not return a count.
Final Answer:
words.filter(word => word.startsWith(pre)).length -> Option A
Words starting with 'app' are 'apple', 'app', 'application', and 'apply' (4 words).
Step 2: Count these words
Counting them gives 4.
Final Answer:
4 -> Option B
Quick Check:
Words starting with 'app' = 4 [OK]
Hint: Count words starting exactly with prefix 'app' [OK]
Common Mistakes:
Counting 'banana' mistakenly
Counting only exact 'app' word
Confusing includes with startsWith
4. The following TypeScript code is intended to count words starting with prefix pre, but it returns 0. What is the error?
const words = ['prefix', 'preach', 'prevent', 'post'];
const pre = 'pre';
let count = 0;
for (let i = 0; i < words.length; i++) {
if (words[i].startWith(pre)) {
count++;
}
}
console.log(count);
medium
A. Method name should be startsWith, not startWith
B. Variable pre is not defined
C. Loop should start from 1, not 0
D. count should be initialized to 1
Solution
Step 1: Check method name correctness
The method to check prefix is startsWith, but code uses startWith, which is undefined.
Step 2: Understand effect of typo
Because of the typo, condition is always false, so count remains 0.
Final Answer:
Method name should be startsWith, not startWith -> Option A
Quick Check:
Correct method name fixes count [OK]
Hint: Check method spelling: startsWith, not startWith [OK]
Common Mistakes:
Using startWith instead of startsWith
Incorrect loop index start
Wrong count initialization
5. Given a large list of words, which data structure would optimize counting how many words start with a given prefix efficiently for multiple queries?
hard
A. Array sorted alphabetically
B. Stack storing words
C. Hash Map with full words as keys
D. Trie (Prefix Tree)
Solution
Step 1: Understand prefix query optimization
Trie stores words by characters in a tree, allowing fast prefix searches.
Step 2: Compare other data structures
Sorted arrays require binary search but less efficient for many prefix queries. Hash maps store full words, not prefixes. Stacks do not support prefix queries efficiently.
Final Answer:
Trie (Prefix Tree) -> Option D
Quick Check:
Trie enables fast prefix counts [OK]
Hint: Use Trie for fast prefix counting in many queries [OK]
Common Mistakes:
Choosing array or hash map for prefix queries
Not knowing Trie supports prefix efficiently
Confusing stack usage for prefix search
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.