Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Substring Search Patterns in DSA Typescript - 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. It compares characters one by one until a match or mismatch is found.
Click to reveal answer
intermediate
What is the key idea behind the Knuth-Morris-Pratt (KMP) algorithm?
KMP uses a precomputed table to skip unnecessary comparisons by remembering how the pattern matches itself, so it doesn't start over from scratch after a mismatch.
Click to reveal answer
intermediate
What does the prefix function (also called failure function) in KMP represent?
It shows the length of the longest proper prefix of the pattern that is also a suffix ending at each position, helping to decide where to continue after a mismatch.
Click to reveal answer
beginner
Why is substring search important in real life?
It helps in searching words in documents, DNA sequence matching, finding patterns in data, and many other tasks where we look for smaller parts inside bigger data.
Click to reveal answer
What does the naive substring search algorithm do when it finds a mismatch?
AMoves the pattern one position to the right and starts comparing again from the first character
BSkips multiple characters based on a precomputed table
CStops searching immediately
DJumps to the end of the text
Which algorithm uses a prefix function to optimize substring search?
ANaive Search
BKnuth-Morris-Pratt (KMP)
CBubble Sort
DBinary Search
What is the time complexity of the naive substring search in the worst case?
AO(log n)
BO(n + m)
CO(n * m)
DO(1)
In KMP, what does the prefix function help to avoid?
ARechecking characters that are already matched
BSorting the text
CUsing extra memory
DSearching the entire text
Which of these is NOT a use case of substring search?
AFinding a word in a document
BMatching DNA sequences
CDetecting patterns in logs
DSorting numbers
Describe how the naive substring search algorithm works step-by-step.
Think about how you look for a word in a book by checking each letter.
You got /3 concepts.
    Explain the role of the prefix function in the KMP algorithm and how it improves search efficiency.
    It remembers pattern parts to avoid starting over completely.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main goal of substring search algorithms in strings?
      easy
      A. To sort all characters in a string alphabetically
      B. To find if a smaller string exists inside a larger string
      C. To reverse the entire string
      D. To count the total number of vowels in a string

      Solution

      1. Step 1: Understand substring search purpose

        Substring search algorithms check if a smaller string (pattern) appears inside a bigger string (text).
      2. Step 2: Compare options with substring search definition

        Only To find if a smaller string exists inside a larger string matches this goal. Sorting, reversing, or counting vowels are different tasks.
      3. Final Answer:

        To find if a smaller string exists inside a larger string -> Option B
      4. Quick Check:

        Substring search = find smaller string inside larger [OK]
      Hint: Substring search means finding a smaller string inside a bigger one [OK]
      Common Mistakes:
      • Confusing substring search with sorting or reversing strings
      • Thinking substring search counts characters
      • Mixing substring search with string length calculation
      2. Which of the following is the correct TypeScript syntax to check if string text contains substring pattern?
      easy
      A. text.includes(pattern)
      B. text.contains(pattern)
      C. text.has(pattern)
      D. text.find(pattern)

      Solution

      1. Step 1: Recall TypeScript string methods

        TypeScript strings have a method called includes to check substring presence.
      2. Step 2: Verify method names

        Only includes is valid. contains, has, and find are not string methods in TypeScript.
      3. Final Answer:

        text.includes(pattern) -> Option A
      4. Quick Check:

        Use includes() to check substring presence [OK]
      Hint: Use includes() method to check substring in TypeScript [OK]
      Common Mistakes:
      • Using non-existent methods like contains() or has()
      • Confusing includes() with find() which is for arrays
      • Forgetting parentheses after method name
      3. What will be the output of the following TypeScript code?
      const text = "hello world";
      const pattern = "wor";
      console.log(text.indexOf(pattern));
      medium
      A. 6
      B. -1
      C. 3
      D. 0

      Solution

      1. Step 1: Understand indexOf method

        indexOf returns the starting index of the substring if found, else -1.
      2. Step 2: Find substring position in text

        In "hello world", substring "wor" starts at index 6 (0-based counting: h=0, e=1, l=2, l=3, o=4, space=5, w=6).
      3. Final Answer:

        6 -> Option A
      4. Quick Check:

        indexOf("wor") = 6 [OK]
      Hint: indexOf returns start index or -1 if not found [OK]
      Common Mistakes:
      • Counting index starting from 1 instead of 0
      • Confusing indexOf with includes (which returns boolean)
      • Assuming indexOf returns substring length
      4. Identify the error in the following TypeScript code snippet for substring search:
      const text = "typescript";
      const pattern = "script";
      if (text.find(pattern)) {
        console.log("Found");
      } else {
        console.log("Not Found");
      }
      medium
      A. Using if statement without parentheses
      B. Missing semicolon after console.log statements
      C. Pattern variable is not declared
      D. Using find() method on string which does not exist

      Solution

      1. Step 1: Check string methods in TypeScript

        Strings do not have a find() method. The correct method to check substring is includes() or indexOf().
      2. Step 2: Verify other code parts

        Semicolons are optional in TypeScript, pattern is declared, and if statement syntax is correct.
      3. Final Answer:

        Using find() method on string which does not exist -> Option D
      4. Quick Check:

        Strings have includes(), not find() [OK]
      Hint: Use includes() or indexOf(), not find() on strings [OK]
      Common Mistakes:
      • Assuming find() works on strings like arrays
      • Thinking semicolons are mandatory causing errors
      • Misreading if statement syntax
      5. You want to find all starting indices of substring pattern in string text. Which approach correctly finds multiple occurrences in TypeScript?
      hard
      A. Use text.indexOf(pattern) once and return that single index
      B. Use text.includes(pattern) repeatedly without changing index
      C. Use a loop with indexOf(pattern, startIndex) updating startIndex after each find
      D. Use text.findAll(pattern) method to get all indices

      Solution

      1. Step 1: Understand multiple substring search

        To find all occurrences, you must repeatedly search starting after the last found index.
      2. Step 2: Analyze each option

        Use a loop with indexOf(pattern, startIndex) updating startIndex after each find uses a loop with indexOf and updates start index, which is correct. Use text.includes(pattern) repeatedly without changing index does not update index, so it loops infinitely or finds only once. Use text.indexOf(pattern) once and return that single index finds only one occurrence. Use text.findAll(pattern) method to get all indices uses a non-existent method.
      3. Final Answer:

        Use a loop with indexOf(pattern, startIndex) updating startIndex after each find -> Option C
      4. Quick Check:

        Loop with indexOf and updated start index finds all [OK]
      Hint: Loop with indexOf and update start index to find all [OK]
      Common Mistakes:
      • Not updating start index causing infinite loops
      • Using includes() which returns boolean, not index
      • Expecting findAll() method which does not exist
      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