Bird
Raised Fist0
DSA Javascriptprogramming~5 mins

Count Words with Given Prefix in DSA Javascript - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Count Words with Given Prefix
O(n x m)
Understanding Time Complexity

We want to understand how the time needed to count words with a certain prefix grows as the list of words gets bigger.

How does the number of steps change when we have more words or longer prefixes?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


function countWordsWithPrefix(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.

Identify Repeating Operations
  • Primary operation: Checking each word to see if it starts with the prefix.
  • How many times: Once for every word in the list (n times).
  • Inside each check: Comparing characters of the prefix with the start of the word (up to prefix length m).
How Execution Grows With Input

As the number of words (n) grows, the code checks each word once. For each word, it compares up to m characters where m is the prefix length.

Input Size (n)Approx. Operations (checks x prefix length)
1010 x m
100100 x m
10001000 x m

Pattern observation: The total work grows linearly with the number of words and also depends on the prefix length.

Final Time Complexity

Time Complexity: O(n x m)

This means the time grows proportionally to the number of words and the length of the prefix we check.

Common Mistake

[X] Wrong: "Checking the prefix is just O(1) because prefix length is small and fixed."

[OK] Correct: Even if prefix is short, it still takes time proportional to its length for each word, so prefix length matters in total time.

Interview Connect

Understanding how loops and string checks add up helps you explain your code clearly and shows you can think about efficiency in real problems.

Self-Check

"What if the words were stored in a trie data structure? How would the time complexity change when counting words with the prefix?"

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