Bird
Raised Fist0
DSA C#programming

Count Words with Given Prefix in DSA C#

Choose your learning style10 modes available
Mental Model
We want to find how many words start with a certain beginning part (prefix). We look through each word and check if it starts with that prefix.
Analogy: Imagine you have a box of books and you want to count how many book titles start with the word 'The'. You look at each title and count only those that begin with 'The'.
Words: [apple, app, ape, bat, ball]
Prefix: 'ap'
Count how many words start with 'ap'
Dry Run Walkthrough
Input: words: ["apple", "app", "ape", "bat", "ball"], prefix: "ap"
Goal: Count how many words start with the prefix "ap"
Step 1: Check word 'apple' if it starts with 'ap'
Words checked: ['apple']
Count: 1
Why: 'apple' starts with 'ap', so count increases to 1
Step 2: Check word 'app' if it starts with 'ap'
Words checked: ['apple', 'app']
Count: 2
Why: 'app' starts with 'ap', so count increases to 2
Step 3: Check word 'ape' if it starts with 'ap'
Words checked: ['apple', 'app', 'ape']
Count: 3
Why: 'ape' starts with 'ap', so count increases to 3
Step 4: Check word 'bat' if it starts with 'ap'
Words checked: ['apple', 'app', 'ape', 'bat']
Count: 3
Why: 'bat' does not start with 'ap', count stays 3
Step 5: Check word 'ball' if it starts with 'ap'
Words checked: ['apple', 'app', 'ape', 'bat', 'ball']
Count: 3
Why: 'ball' does not start with 'ap', count stays 3
Result:
Final count: 3
Annotated Code
DSA C#
using System;
using System.Collections.Generic;

class Program
{
    static int CountWordsWithPrefix(List<string> words, string prefix)
    {
        int count = 0;
        foreach (string word in words)
        {
            if (word.StartsWith(prefix))
            {
                count++;
            }
        }
        return count;
    }

    static void Main()
    {
        List<string> words = new List<string> { "apple", "app", "ape", "bat", "ball" };
        string prefix = "ap";
        int result = CountWordsWithPrefix(words, prefix);
        Console.WriteLine(result);
    }
}
foreach (string word in words)
iterate over each word to check prefix
if (word.StartsWith(prefix))
check if current word starts with the given prefix
count++;
increment count when prefix matches
return count;
return total count of words with prefix
OutputSuccess
3
Complexity Analysis
Time: O(n * m) because we check each of the n words and compare up to m characters of the prefix
Space: O(1) because we only use a counter variable regardless of input size
vs Alternative: Compared to building a trie for prefix counting, this approach is simpler but slower for many queries; trie offers faster repeated prefix queries but uses more space and setup time
Edge Cases
empty words list
returns 0 because no words to check
DSA C#
foreach (string word in words)
empty prefix string
counts all words because every word starts with empty string
DSA C#
if (word.StartsWith(prefix))
no words start with prefix
returns 0 because no matches found
DSA C#
if (word.StartsWith(prefix))
When to Use This Pattern
When you need to count or find words starting with a certain beginning part, use prefix checking by scanning each word or a prefix tree for efficiency.
Common Mistakes
Mistake: Checking if prefix is contained anywhere in the word instead of only at the start
Fix: Use StartsWith method to ensure prefix is at the beginning
Summary
Counts how many words in a list start with a given prefix.
Use when you want to find or count words that begin with certain letters.
The key is to check only the start of each word, not anywhere inside.

Practice

(1/5)
1. What does the problem "Count Words with Given Prefix" ask you to do?
easy
A. Count how many words in a list start with a specific prefix
B. Find the longest word in a list
C. Sort words alphabetically
D. Replace the prefix in all words with another string

Solution

  1. Step 1: Understand the problem statement

    The problem asks to count words that begin with a given prefix, not to sort or replace words.
  2. Step 2: Identify the key action

    Counting words starting with the prefix is the main task.
  3. Final Answer:

    Count how many words in a list start with a specific prefix -> Option A
  4. Quick Check:

    Count words with prefix = Count how many words in a list start with a specific prefix [OK]
Hint: Focus on words starting with prefix, not other operations [OK]
Common Mistakes:
  • Confusing counting with sorting
  • Thinking the task is to replace prefixes
  • Ignoring the prefix condition
2. Which of the following C# code snippets correctly checks if a string word starts with a prefix prefix?
easy
A. if (word == prefix) { /* do something */ }
B. if (word.Contains(prefix)) { /* do something */ }
C. if (word.EndsWith(prefix)) { /* do something */ }
D. if (word.StartsWith(prefix)) { /* do something */ }

Solution

  1. Step 1: Recall string methods in C#

    The method StartsWith checks if a string begins with a given substring.
  2. Step 2: Compare options

    Contains checks anywhere in the string, EndsWith checks the end, and == checks exact equality.
  3. Final Answer:

    if (word.StartsWith(prefix)) { /* do something */ } -> Option D
  4. Quick Check:

    Use StartsWith to check prefix [OK]
Hint: Use StartsWith method to check prefix in C# strings [OK]
Common Mistakes:
  • Using Contains instead of StartsWith
  • Checking equality instead of prefix
  • Using EndsWith which checks suffix
3. What is the output of the following C# code?
string[] words = {"apple", "app", "application", "banana"};
string prefix = "app";
int count = 0;
foreach (var word in words) {
    if (word.StartsWith(prefix)) {
        count++;
    }
}
Console.WriteLine(count);
medium
A. 2
B. 1
C. 3
D. 4

Solution

  1. Step 1: Check each word against prefix "app"

    Words: "apple" (yes), "app" (yes), "application" (yes), "banana" (no).
  2. Step 2: Count matches

    Three words start with "app", so count = 3.
  3. Final Answer:

    3 -> Option C
  4. Quick Check:

    Words starting with "app" = 3 [OK]
Hint: Count words starting with prefix by checking each word [OK]
Common Mistakes:
  • Counting only exact matches
  • Including words that contain prefix but don't start with it
  • Off-by-one counting errors
4. The following code is intended to count words starting with a prefix but gives wrong output. What is the error?
string[] words = {"cat", "car", "dog", "cart"};
string prefix = "car";
int count = 0;
for (int i = 0; i <= words.Length; i++) {
    if (words[i].StartsWith(prefix)) {
        count++;
    }
}
Console.WriteLine(count);
medium
A. The loop condition should be i < words.Length instead of <=.
B. The prefix variable is incorrect.
C. The StartsWith method is used wrongly.
D. The count variable should be initialized inside the loop.

Solution

  1. Step 1: Analyze the for loop condition

    The loop runs from i = 0 to i <= words.Length, which causes an index out of range error because valid indices are 0 to words.Length - 1.
  2. Step 2: Correct the loop condition

    Change condition to i < words.Length to avoid accessing invalid index.
  3. Final Answer:

    The loop condition should be i < words.Length instead of <=. -> Option A
  4. Quick Check:

    Loop index must be less than array length [OK]
Hint: Use i < array.Length to avoid index errors in loops [OK]
Common Mistakes:
  • Using <= instead of < in loop condition
  • Reinitializing count inside loop
  • Misusing StartsWith method
5. Given a list of words ["tree", "trie", "trigger", "trip", "try", "matrix"] and prefix "tri", which C# code snippet correctly counts the words starting with the prefix and prints the count?
hard
A. int count = 0; foreach(var word in words) { if(word.Contains(prefix)) count++; } Console.WriteLine(count);
B. int count = words.Count(word => word.StartsWith(prefix)); Console.WriteLine(count);
C. int count = 0; for(int i=0; i<=words.Length; i++) { if(words[i].StartsWith(prefix)) count++; } Console.WriteLine(count);
D. int count = words.Length; Console.WriteLine(count);

Solution

  1. Step 1: Understand the requirement

    We need to count words starting exactly with prefix "tri".
  2. Step 2: Evaluate each option

    int count = words.Count(word => word.StartsWith(prefix)); Console.WriteLine(count); uses LINQ Count with StartsWith correctly.
    int count = 0; foreach(var word in words) { if(word.Contains(prefix)) count++; } Console.WriteLine(count); uses Contains which counts words containing prefix anywhere.
    int count = 0; for(int i=0; i<=words.Length; i++) { if(words[i].StartsWith(prefix)) count++; } Console.WriteLine(count); has loop with <= causing index error.
    int count = words.Length; Console.WriteLine(count); counts all words ignoring prefix.
  3. Final Answer:

    int count = words.Count(word => word.StartsWith(prefix)); Console.WriteLine(count); -> Option B
  4. Quick Check:

    Use LINQ Count with StartsWith for prefix count [OK]
Hint: Use LINQ Count with StartsWith for concise prefix counting [OK]
Common Mistakes:
  • Using Contains instead of StartsWith
  • Loop index out of range errors
  • Counting all words without prefix check
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard