It means finding how many words in a list start with a specific set of letters called a prefix.
Click to reveal answer
beginner
Why is a prefix important in searching words?
A prefix helps to quickly find words that begin with certain letters without checking the whole word.
Click to reveal answer
beginner
How can you count words with a given prefix using a simple loop?
Check each word in the list. If the word starts with the prefix, add 1 to the count. At the end, the count shows how many words matched.
Click to reveal answer
beginner
What Python string method helps to check if a word starts with a prefix?
The method is called startswith(). It returns True if the word starts with the prefix, otherwise False.
Click to reveal answer
intermediate
What is a more efficient data structure than a list for prefix counting in many queries?
A Trie (prefix tree) is more efficient because it stores words by their prefixes, allowing fast counting of words with a given prefix.
Click to reveal answer
Which Python method checks if a string starts with a specific prefix?
Astartswith()
Bendswith()
Ccontains()
Dfind()
✗ Incorrect
startswith() returns True if the string begins with the given prefix.
What does the prefix in 'Count Words with Given Prefix' refer to?
AThe ending letters of a word
BThe starting letters of a word
CAny letters inside a word
DThe middle letters of a word
✗ Incorrect
A prefix is the starting part of a word.
If you have a list of words and want to count how many start with 'pre', what is the simplest approach?
ASort the list and pick the first word
BCount words that end with 'pre'
CUse a loop and check each word with startswith('pre')
DUse a dictionary to store word lengths
✗ Incorrect
Looping and checking each word with startswith() is the direct way.
Which data structure is best for fast prefix queries when many queries are needed?
ATrie
BList
CStack
DQueue
✗ Incorrect
Trie stores words by prefixes, making prefix queries efficient.
What is the output of counting words with prefix 'a' in ['apple', 'banana', 'apricot', 'cherry']?
A1
B3
C4
D2
✗ Incorrect
'apple' and 'apricot' start with 'a', so count is 2.
Explain how to count words with a given prefix using a simple Python approach.
Think about checking each word one by one.
You got /4 concepts.
Describe why a Trie is useful for counting words with a given prefix when there are many queries.
Imagine a tree where each branch is a letter.
You got /4 concepts.
Practice
(1/5)
1. What does the function countWordsStartingWith(words, prefix) do when given a list of words and a prefix?
easy
A. Counts how many words contain the prefix anywhere inside
B. Returns the first word that starts with the prefix
C. Counts how many words in the list start with the given prefix
D. Removes all words that start with the prefix from the list
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 behavior
Only Counts how many words in the list start with the given prefix correctly describes counting words starting with the prefix. Others describe different behaviors.
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: Focus on 'start with' meaning prefix at word beginning [OK]
Common Mistakes:
Confusing 'start with' and 'contain' prefix
Thinking function returns words instead of count
Assuming it removes words instead of counting
2. Which of the following Python code snippets correctly counts words starting with a prefix p in a list words?
easy
A. sum(word.startswith(p) for word in words)
B. sum(word.startswith(p) == 'True' for word in words)
C. sum(word.startswith(p) is 'True' for word in words)
D. sum(word.startswith(p) = True for word in words)
Solution
Step 1: Check syntax correctness
sum(word.startswith(p) = True for word in words) uses '=' inside sum which is invalid syntax for comparison.
Step 2: Understand boolean summation
Options B and C incorrectly compare boolean to string 'True' (always False). Only sum(word.startswith(p) for word in words) correctly sums booleans directly (True counts as 1).
Final Answer:
sum(word.startswith(p) for word in words) -> Option A
Quick Check:
Use sum with boolean directly for counting [OK]
Hint: Use sum with boolean expressions directly, no need for == or is [OK]
Common Mistakes:
Using '=' instead of '==' for comparison
Comparing boolean to string 'True'
Confusing syntax causing errors
3. What is the output of the following code?
words = ['apple', 'app', 'application', 'banana', 'apply']
prefix = 'app'
count = sum(word.startswith(prefix) for word in words)
print(count)
medium
A. 2
B. 3
C. 5
D. 4
Solution
Step 1: Identify words starting with 'app'
Words starting with 'app' are 'apple', 'app', 'application', and 'apply' -- total 4 words.
Step 2: Calculate sum of True values
Each word starting with prefix counts as 1, so sum is 4.
Final Answer:
4 -> Option D
Quick Check:
Count words starting with 'app' = 4 [OK]
Hint: Count words starting exactly with prefix, not just containing it [OK]
Common Mistakes:
Counting words that contain prefix anywhere
Missing one word that starts with prefix
Confusing prefix length with word length
4. Find the error in this code that tries to count words starting with prefix 'pre':
def count_prefix(words, prefix):
count = 0
for word in words:
if word.startswith == prefix:
count += 1
return count
words = ['prefix', 'preach', 'prevent', 'post']
prefix = 'pre'
print(count_prefix(words, prefix))
medium
A. Using 'word.startswith == prefix' instead of 'word.startswith(prefix)'
B. Missing return statement in function
C. Incorrect variable name 'count' used
D. Loop should be 'for prefix in words' instead of 'for word in words'
Solution
Step 1: Identify incorrect method usage
The code uses 'word.startswith == prefix' which compares method to string, incorrect syntax.
Step 2: Correct method call
It should be 'word.startswith(prefix)' to check if word starts with prefix.
Final Answer:
Using 'word.startswith == prefix' instead of 'word.startswith(prefix)' -> Option A
Quick Check:
Method call needs parentheses with argument [OK]
Hint: Remember to call methods with parentheses and arguments [OK]
Common Mistakes:
Comparing method itself instead of calling it
Forgetting parentheses after method name
Mixing variable names in loop
5. Given a list of words, how would you count words starting with any prefix from a list of prefixes prefixes? Choose the correct code snippet.
A. sum(word.startswith(prefixes[0]) or word.startswith(prefixes[1]) for word in words)
B. sum(any(word.startswith(p) for p in prefixes) for word in words)
C. sum(word.startswith(prefixes) for word in words)
D. sum(word.startswith(p) and p in prefixes for word in words)
Solution
Step 1: Understand requirement for multiple prefixes
We need to check if each word starts with any prefix in the prefixes list.
Step 2: Analyze options for correct logic
sum(any(word.startswith(p) for p in prefixes) for word in words) uses any() to correctly check if word starts with any prefix. sum(word.startswith(prefixes[0]) or word.startswith(prefixes[1]) for word in words) only checks first two prefixes (misses 'cow' with 'co'). sum(word.startswith(prefixes) for word in words) passes list to startswith (TypeError). sum(word.startswith(p) and p in prefixes for word in words) uses unbound p and incorrect and logic.
Final Answer:
sum(any(word.startswith(p) for p in prefixes) for word in words) -> Option B
Quick Check:
Use any() to check multiple prefixes per word [OK]
Hint: Use any() inside sum() to check multiple prefixes per word [OK]
Common Mistakes:
Passing list directly to startswith instead of iterating
Using 'and' instead of 'or' logic
Hardcoding prefix checks instead of looping
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.