📖 Scenario: You are building a simple tool to help a bookstore find how many book titles start with a certain prefix. This helps the store quickly find popular categories.
🎯 Goal: Create a Rust program that counts how many words in a list start with a given prefix.
📋 What You'll Learn
Create a vector of strings called words with exact values
Create a string variable called prefix with an exact value
Use a for loop to count how many words start with prefix
Print the count as the final output
💡 Why This Matters
🌍 Real World
Counting words with a prefix is useful in search engines, autocomplete features, and filtering lists quickly.
💼 Career
This skill helps in text processing, search optimization, and building efficient user interfaces.
Progress0 / 4 steps
1
Create the list of words
Create a vector of strings called words with these exact entries: "apple", "app", "application", "banana", "apricot".
DSA Rust
Hint
Use vec![...] to create a vector of string slices.
2
Set the prefix to search
Create a string variable called prefix and set it to "app".
DSA Rust
Hint
Use let prefix = "app"; to create the prefix variable.
3
Count words starting with the prefix
Create a mutable integer variable called count and set it to 0. Use a for loop with variable word to iterate over words.iter(). Inside the loop, use word.starts_with(prefix) to check if the word starts with prefix. If yes, increase count by 1.
DSA Rust
Hint
Use let mut count = 0; and a for loop with words.iter(). Use starts_with method on each word.
4
Print the count
Print the value of count using println!.
DSA Rust
Hint
Use println!("{}", count); to print the count.
Practice
(1/5)
1. What does the problem "Count Words with Given Prefix" ask you to do?
easy
A. Find the longest word in a list
B. Count how many words in a list start with a specific prefix
C. Count the total number of characters in all words
D. Sort the words alphabetically
Solution
Step 1: Understand the problem statement
The problem asks to find how many words start with a given prefix, not about length or sorting.
Step 2: Identify the key task
Counting words that begin with the prefix is the main task.
Final Answer:
Count how many words in a list start with a specific prefix -> Option B
Quick Check:
Count words starting with prefix = Count how many words in a list start with a specific prefix [OK]
Hint: Focus on words starting with prefix, not full word or sorting [OK]
Common Mistakes:
Confusing prefix with substring anywhere in word
Counting total characters instead of words
Sorting words instead of counting
2. Which of the following Rust code snippets correctly checks if a word starts with a given prefix prefix?
easy
A. word.starts_with(prefix)
B. word.contains(prefix)
C. word.ends_with(prefix)
D. word == prefix
Solution
Step 1: Recall Rust string methods
Rust's starts_with method checks if a string begins with a given substring.
Step 2: Compare options
contains checks anywhere, ends_with checks suffix, and == checks full equality, so only starts_with fits.
Final Answer:
word.starts_with(prefix) -> Option A
Quick Check:
Use starts_with() to check prefix [OK]
Hint: Use starts_with() method to check prefix in Rust strings [OK]
Common Mistakes:
Using contains() which matches anywhere, not just prefix
Using ends_with() which checks suffix
Comparing full equality instead of prefix
3. What is the output of this Rust code?
let words = vec!["apple", "app", "application", "banana"];
let prefix = "app";
let count = words.iter().filter(|w| w.starts_with(prefix)).count();
println!("{}", count);
medium
A. 3
B. 2
C. 1
D. 4
Solution
Step 1: Identify words starting with "app"
Words are "apple", "app", "application", and "banana". The first three start with "app".
Step 2: Count matching words
Count is 3 because "apple", "app", and "application" start with "app".
Final Answer:
3 -> Option A
Quick Check:
3 words start with "app" [OK]
Hint: Count words where starts_with(prefix) is true [OK]
Common Mistakes:
Counting only exact matches
Including words that don't start with prefix
Off-by-one counting errors
4. The following Rust code tries to count words starting with a prefix but gives wrong output. What is the bug?
let words = vec!["cat", "car", "dog", "scare"];
let prefix = "car";
let count = words.iter().filter(|w| w.contains(prefix)).count();
println!("{}", count);
medium
A. Missing semicolon after count declaration
B. Prefix variable is not declared correctly
C. The vector words is empty
D. Using contains() instead of starts_with() causes wrong matches
Solution
Step 1: Understand difference between contains() and starts_with()
contains() checks if prefix appears anywhere, not just at start.
Step 2: Identify incorrect matches
"scare" contains "car" but does not start with "car", so contains() wrongly counts it.
Final Answer:
Using contains() instead of starts_with() causes wrong matches -> Option D
Quick Check:
Use starts_with() to count prefix matches [OK]
Hint: Replace contains() with starts_with() to fix prefix counting [OK]
Common Mistakes:
Confusing contains() with starts_with()
Assuming contains() only matches prefix
Ignoring method differences
5. Given a list of words ["test", "tester", "testing", "toast", "team"] and prefix "te", which Rust code correctly counts words starting with the prefix and ignores case sensitivity?
hard
A. words.iter().filter(|w| w.contains(prefix)).count()
B. words.iter().filter(|w| w.starts_with(prefix)).count()
C. words.iter().filter(|w| w.to_lowercase().starts_with(&prefix.to_lowercase())).count()
D. words.iter().filter(|w| w.ends_with(prefix)).count()
Solution
Step 1: Understand case sensitivity in Rust strings
Rust's starts_with is case sensitive, so we convert both word and prefix to lowercase.
Step 2: Check each option for case-insensitive prefix check
words.iter().filter(|w| w.to_lowercase().starts_with(&prefix.to_lowercase())).count() converts both to lowercase before checking prefix, ensuring case-insensitive match. Others do not handle case.
Final Answer:
words.iter().filter(|w| w.to_lowercase().starts_with(&prefix.to_lowercase())).count() -> Option C
Quick Check:
Convert both strings to lowercase before starts_with() [OK]
Hint: Lowercase both word and prefix before starts_with() for case-insensitive [OK]
Common Mistakes:
Ignoring case sensitivity in starts_with()
Using contains() which is wrong for prefix
Using ends_with() instead of starts_with()
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.