Bird
Raised Fist0
DSA Javascriptprogramming~5 mins

Substring Search Patterns in DSA Javascript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main goal of substring search in strings?
To find if a smaller string (pattern) exists inside a larger string (text), and if so, where it starts.
Click to reveal answer
beginner
Explain the naive substring search approach.
Check every position in the text to see if the pattern matches starting there. Simple but can be slow for large texts.
Click to reveal answer
intermediate
What is the key idea behind the Knuth-Morris-Pratt (KMP) algorithm?
Use information from previous matches to avoid re-checking characters, by building a prefix table that tells where to continue after a mismatch.
Click to reveal answer
intermediate
What does the prefix table (also called lps array) represent in KMP?
For each position in the pattern, it stores the length of the longest prefix that is also a suffix up to that position.
Click to reveal answer
intermediate
Why is KMP more efficient than naive substring search?
Because it never moves backward in the text, it uses the prefix table to skip unnecessary comparisons, making it run in linear time.
Click to reveal answer
What does substring search try to find?
AThe last character of a string
BThe length of a string
CA smaller string inside a larger string
DThe number of vowels in a string
In naive substring search, what do we do at each position in the text?
ACheck if the pattern matches starting there
BSkip the position
CReverse the text
DSort the characters
What does the prefix table in KMP help us avoid?
ARe-checking characters after a mismatch
BFinding the pattern
CCounting characters
DReversing the pattern
What is stored in the prefix table (lps array) in KMP?
APositions of vowels in the pattern
BLength of longest prefix which is also suffix for each pattern position
CNumber of mismatches
DLength of the text
Why is KMP faster than naive search?
AIt sorts the pattern
BIt checks every character twice
CIt reverses the text
DIt skips unnecessary comparisons using the prefix table
Describe how the naive substring search algorithm works step-by-step.
Think about sliding the pattern over the text one by one.
You got /4 concepts.
    Explain the purpose and construction of the prefix table in the KMP algorithm.
    Focus on how the pattern itself helps avoid re-checking.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the indexOf method do when used on a string in JavaScript?
      easy
      A. Converts the string to uppercase
      B. Replaces a substring with another string
      C. Splits the string into an array of substrings
      D. Finds the position of the first occurrence of a substring

      Solution

      1. Step 1: Understand the purpose of indexOf

        The indexOf method searches a string for a specified substring and returns the position of its first occurrence.
      2. Step 2: Confirm behavior on strings

        If the substring is found, it returns the zero-based index; if not found, it returns -1.
      3. Final Answer:

        Finds the position of the first occurrence of a substring -> Option D
      4. Quick Check:

        indexOf = position of substring [OK]
      Hint: Remember: indexOf returns position or -1 if not found [OK]
      Common Mistakes:
      • Confusing indexOf with replace method
      • Thinking indexOf splits the string
      • Assuming indexOf changes the string case
      2. Which of the following is the correct syntax to check if the substring 'cat' exists in the string text using includes method?
      easy
      A. text.include('cat')
      B. includes(text, 'cat')
      C. text.includes('cat')
      D. text.contains('cat')

      Solution

      1. Step 1: Recall the correct method name

        The correct method to check substring presence is includes, called on the string object.
      2. Step 2: Verify syntax

        The syntax is string.includes(substring), so text.includes('cat') is correct.
      3. Final Answer:

        text.includes('cat') -> Option C
      4. Quick Check:

        Correct method call syntax = text.includes('cat') [OK]
      Hint: Use string.includes(substring) to check presence [OK]
      Common Mistakes:
      • Using wrong method name like include or contains
      • Calling includes as a standalone function
      • Passing arguments in wrong order
      3. What will be the output of the following code?
      const text = 'hello world';
      const pos = text.indexOf('o');
      console.log(pos);
      medium
      A. 4
      B. 5
      C. -1
      D. 6

      Solution

      1. Step 1: Identify the string and substring

        The string is 'hello world' and the substring searched is 'o'.
      2. Step 2: Find the first occurrence of 'o'

        Counting from zero: h(0) e(1) l(2) l(3) o(4) (space 5) w(6) o(7). The first 'o' is at index 4.
      3. Step 3: Verify the output

        The code uses indexOf('o') which returns the first occurrence index, which is 4.
      4. Final Answer:

        4 -> Option A
      5. Quick Check:

        First 'o' index = 4 [OK]
      Hint: Count string index from zero to find first substring position [OK]
      Common Mistakes:
      • Counting index starting from 1 instead of 0
      • Confusing second 'o' position with first
      • Assuming indexOf returns -1 if substring exists
      4. The following code is intended to check if the substring 'test' exists in str. What is the error?
      const str = 'this is a test';
      if (str.indexOf == 'test') {
        console.log('Found');
      } else {
        console.log('Not Found');
      }
      medium
      A. The variable str is not declared properly
      B. indexOf is used without parentheses, so it compares function to string
      C. The if condition should use === instead of ==
      D. The substring 'test' is misspelled

      Solution

      1. Step 1: Analyze the use of indexOf

        The code uses str.indexOf without parentheses, so it refers to the function itself, not the result of calling it.
      2. Step 2: Understand the comparison

        Comparing a function to a string ('test') is always false, so the condition is incorrect.
      3. Final Answer:

        indexOf is used without parentheses, so it compares function to string -> Option B
      4. Quick Check:

        Missing parentheses on indexOf causes error [OK]
      Hint: Always call indexOf with parentheses and substring argument [OK]
      Common Mistakes:
      • Forgetting parentheses on indexOf
      • Using wrong comparison operator
      • Assuming indexOf returns boolean directly
      5. You want to find all starting positions of the substring 'ana' in the string 'banana'. Which approach correctly finds all positions?
      hard
      A. Use a loop with indexOf and update the start position after each find
      B. Use includes repeatedly until it returns false
      C. Use lastIndexOf to find all positions from the end
      D. Use replace to remove substring and count occurrences

      Solution

      1. Step 1: Understand the problem of multiple occurrences

        To find all positions, you must repeatedly search starting after the last found position.
      2. Step 2: Use a loop with indexOf and update start

        Use indexOf('ana', start) in a loop, updating start to position + 1 each time until no more found.
      3. Final Answer:

        Use a loop with indexOf and update the start position after each find -> Option A
      4. Quick Check:

        Loop + indexOf with updated start = all positions [OK]
      Hint: Loop with indexOf(start) to find all substring positions [OK]
      Common Mistakes:
      • Using includes which returns only true/false
      • Using lastIndexOf which finds only last occurrence
      • Using replace which changes string and loses positions
      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