Bird
Raised Fist0
DSA Javascriptprogramming~10 mins

Count Words with Given Prefix in DSA Javascript - Execution Trace

Choose your learning style10 modes available
Concept Flow - Count Words with Given Prefix
Start with word list
↓
Check each word
↓
Does word start with prefix?
No→Skip word
Yes↓
Increment count
↓
Repeat for all words
↓
Return count
We check each word one by one to see if it starts with the prefix. If yes, we add to count. Finally, we return the total count.
Execution Sample
DSA Javascript
function countPrefix(words, prefix) {
  let count = 0;
  for (const word of words) {
    if (word.startsWith(prefix)) count++;
  }
  return count;
}
This code counts how many words in the list start with the given prefix.
Execution Table
StepOperationCurrent WordPrefix CheckCountVisual State
1Initialize count--0count=0
2Check wordappleapple.startsWith('ap') = true1count=1
3Check wordappapp.startsWith('ap') = true2count=2
4Check wordbananabanana.startsWith('ap') = false2count=2
5Check wordapricotapricot.startsWith('ap') = true3count=3
6Check wordbatbat.startsWith('ap') = false3count=3
7End loop--3Final count=3
💡 All words checked, loop ends and count returned
Variable Tracker
VariableStartAfter 1After 2After 3After 4After 5After 6Final
count01223333
current word-appleappbananaapricotbat--
Key Moments - 3 Insights
Why does count only increase when prefix check is true?
Because we only want to count words that start with the prefix. See execution_table rows 2,3,5 where prefix check is true and count increases.
What happens if no words start with the prefix?
Count stays zero because the condition word.startsWith(prefix) is never true. This is shown in execution_table rows where prefix check is false and count remains unchanged.
Why do we check each word individually instead of all at once?
Because each word must be tested separately to see if it starts with the prefix. The loop in execution_table rows 2-6 shows this step-by-step checking.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the count after checking the word 'app'?
A1
B2
C3
D0
💡 Hint
Check the 'Count' column at Step 3 in execution_table
At which step does the prefix check return false for the first time?
AStep 4
BStep 3
CStep 2
DStep 5
💡 Hint
Look at the 'Prefix Check' column in execution_table rows
If the prefix was changed to 'ba', what would be the count after checking all words?
A1
B3
C2
D0
💡 Hint
Look at words starting with 'ba' in the variable_tracker and execution_table
Concept Snapshot
Count Words with Given Prefix:
- Loop through each word in list
- Check if word starts with prefix
- If yes, increase count by 1
- Return total count after loop
- Uses string.startsWith(prefix) method
Full Transcript
This concept shows how to count words that start with a given prefix. We start with a count of zero. Then for each word, we check if it starts with the prefix using the startsWith method. If yes, we add one to the count. We repeat this for all words. Finally, we return the count. The execution table shows each step with the current word, prefix check result, and count. The variable tracker shows how count and current word change over time. Key moments clarify why count only increases on true prefix checks, what happens if no words match, and why we check words one by one. The quiz tests understanding of count values and prefix checks at different steps.

Practice

(1/5)
1. What does the function countWordsWithPrefix(words, prefix) do when given a list of words and a prefix?
easy
A. Counts how many words contain the prefix anywhere
B. Counts the total number of words in the list
C. Counts how many words end with the given prefix
D. Counts how many words start with the given prefix

Solution

  1. Step 1: Understand the function purpose

    The function checks each word to see if it starts with the given prefix.
  2. Step 2: Count matching words

    It counts only those words that begin exactly with the prefix, ignoring others.
  3. Final Answer:

    Counts how many words start with the given prefix -> Option D
  4. Quick Check:

    Starts with prefix = Count [OK]
Hint: Look for words starting exactly with prefix [OK]
Common Mistakes:
  • Counting words containing prefix anywhere
  • Counting words ending with prefix
  • Counting total words instead of filtered ones
2. Which of the following is the correct syntax to check if a string word starts with a prefix prefix in JavaScript?
easy
A. word.beginWith(prefix)
B. word.hasPrefix(prefix)
C. word.startsWith(prefix)
D. word.starts(prefix)

Solution

  1. Step 1: Recall JavaScript string methods

    JavaScript strings have a method called startsWith() to check prefix.
  2. Step 2: Match method name

    Only startsWith() is the correct method; others do not exist.
  3. Final Answer:

    word.startsWith(prefix) -> Option C
  4. Quick Check:

    Correct method name = startsWith [OK]
Hint: Use startsWith() method for prefix check [OK]
Common Mistakes:
  • Using non-existent methods like hasPrefix
  • Using incorrect method names like beginWith
  • Confusing startsWith with other string methods
3. What is the output of the following code?
const words = ['apple', 'app', 'application', 'banana'];
const prefix = 'app';
function countWordsWithPrefix(words, prefix) {
  let count = 0;
  for (const word of words) {
    if (word.startsWith(prefix)) {
      count++;
    }
  }
  return count;
}
console.log(countWordsWithPrefix(words, prefix));
medium
A. 3
B. 2
C. 1
D. 4

Solution

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

    'apple', 'app', and 'application' all start with 'app'. 'banana' does not.
  2. Step 2: Count matching words

    There are 3 words starting with 'app', so count is 3.
  3. Final Answer:

    3 -> Option A
  4. Quick Check:

    Words starting with 'app' = 3 [OK]
Hint: Count words starting exactly with prefix [OK]
Common Mistakes:
  • Counting words containing prefix anywhere
  • Missing one of the matching words
  • Counting all words regardless of prefix
4. The following code is intended to count words starting with a prefix, but it has a bug. What is the bug?
function countWordsWithPrefix(words, prefix) {
  let count = 0;
  for (let i = 0; i <= words.length; i++) {
    if (words[i].startsWith(prefix)) {
      count++;
    }
  }
  return count;
}
medium
A. startsWith method is used incorrectly
B. Loop goes out of bounds causing an error
C. count variable is not initialized
D. Prefix is not passed as a parameter

Solution

  1. Step 1: Analyze loop condition

    The loop runs with i from 0 to words.length inclusive, but array indices go from 0 to words.length - 1.
  2. Step 2: Identify out of bounds access

    At i = words.length, words[i] is undefined, so calling startsWith causes an error.
  3. Final Answer:

    Loop goes out of bounds causing an error -> Option B
  4. Quick Check:

    Loop index must be less than length [OK]
Hint: Use i < words.length, not <= [OK]
Common Mistakes:
  • Using <= instead of < in loop condition
  • Not checking array bounds before access
  • Assuming startsWith works on undefined
5. Given the array words = ['Test', 'testing', 'Tester', 'tent', 'team'] and prefix 'te', which code snippet correctly counts words starting with the prefix ignoring case sensitivity?
hard
A. words.filter(w => w.toLowerCase().startsWith(prefix.toLowerCase())).length
B. words.filter(w => w.startsWith(prefix)).length
C. words.filter(w => w.includes(prefix)).length
D. words.filter(w => w.endsWith(prefix)).length

Solution

  1. Step 1: Understand case sensitivity issue

    Direct startsWith is case sensitive, so 'Test' and 'test' differ.
  2. Step 2: Use toLowerCase() to normalize

    Convert both word and prefix to lowercase before checking startsWith to ignore case.
  3. Final Answer:

    words.filter(w => w.toLowerCase().startsWith(prefix.toLowerCase())).length -> Option A
  4. Quick Check:

    Normalize case before prefix check [OK]
Hint: Convert both strings to lowercase before startsWith [OK]
Common Mistakes:
  • Ignoring case sensitivity
  • Using includes instead of startsWith
  • Using endsWith instead of startsWith
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