Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Longest Common Prefix in DSA Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the Longest Common Prefix (LCP) in a list of strings?
The Longest Common Prefix is the longest starting substring that is common to all strings in the list. For example, for ["flower", "flow", "flight"], the LCP is "fl".
Click to reveal answer
beginner
How do you find the Longest Common Prefix by comparing characters vertically?
You compare characters of all strings at the same index one by one. Stop when a mismatch or end of any string is found. The prefix up to that point is the LCP.
Click to reveal answer
intermediate
What is the time complexity of the vertical scanning approach for Longest Common Prefix?
The time complexity is O(S), where S is the sum of all characters in all strings. This is because each character is compared at most once.
Click to reveal answer
intermediate
Explain the divide and conquer approach for Longest Common Prefix.
Divide the list into two halves, find the LCP of each half recursively, then find the common prefix of these two results. Repeat until the whole list is processed.
Click to reveal answer
beginner
What is a simple base case when implementing Longest Common Prefix recursively?
If the list has only one string, the LCP is that string itself. If the list is empty, the LCP is an empty string.
Click to reveal answer
What is the Longest Common Prefix of ["dog", "racecar", "car"]?
A"d"
B"" (empty string)
C"car"
D"do"
Which approach compares characters of all strings at the same index one by one?
ADivide and conquer
BHorizontal scanning
CVertical scanning
DBinary search
If the input list has only one string, what is the Longest Common Prefix?
AEmpty string
BUndefined
CFirst character of the string
DThe string itself
What is the worst-case time complexity of the Longest Common Prefix problem using vertical scanning?
AO(S), where S is total characters
BO(log n)
CO(n^2)
DO(n)
In divide and conquer for LCP, what do you do after finding LCPs of two halves?
AFind common prefix of the two LCPs
BConcatenate both LCPs
CReturn the longer LCP
DDiscard one LCP
Describe how to find the Longest Common Prefix using vertical scanning.
Think about checking columns of characters one by one.
You got /3 concepts.
    Explain the divide and conquer method to find the Longest Common Prefix.
    Divide the problem into smaller parts and combine.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the Longest Common Prefix (LCP) of a list of strings represent?
      easy
      A. The longest starting substring common to all strings
      B. The longest ending substring common to all strings
      C. The longest substring found anywhere in all strings
      D. The shortest string in the list

      Solution

      1. Step 1: Understand the prefix concept

        A prefix is a substring at the start of a string.
      2. Step 2: Define longest common prefix

        The LCP is the longest substring starting from the beginning that all strings share.
      3. Final Answer:

        The longest starting substring common to all strings -> Option A
      4. Quick Check:

        Prefix means start of string = B [OK]
      Hint: Focus on the start of strings to find common parts [OK]
      Common Mistakes:
      • Confusing prefix with suffix
      • Looking for substring anywhere, not just start
      • Choosing shortest string as prefix
      2. Which of the following TypeScript function signatures correctly represents a function to find the longest common prefix of an array of strings?
      easy
      A. function longestCommonPrefix(strs: string[]): string
      B. function longestCommonPrefix(strs: number[]): string
      C. function longestCommonPrefix(strs: string): string[]
      D. function longestCommonPrefix(strs: string[]): number

      Solution

      1. Step 1: Identify input type

        The input should be an array of strings, so type is string[].
      2. Step 2: Identify output type

        The output is the longest common prefix, a string.
      3. Final Answer:

        function longestCommonPrefix(strs: string[]): string -> Option A
      4. Quick Check:

        Input array of strings, output string = D [OK]
      Hint: Input is string array, output is string prefix [OK]
      Common Mistakes:
      • Using number[] instead of string[]
      • Returning array instead of string
      • Passing single string instead of array
      3. What is the output of the following TypeScript code?
      function longestCommonPrefix(strs: string[]): string {
        if (strs.length === 0) return "";
        let prefix = strs[0];
        for (let i = 1; i < strs.length; i++) {
          while (strs[i].indexOf(prefix) !== 0) {
            prefix = prefix.substring(0, prefix.length - 1);
            if (prefix === "") return "";
          }
        }
        return prefix;
      }
      
      console.log(longestCommonPrefix(["flower", "flow", "flight"]));
      medium
      A. "flow"
      B. "fl"
      C. "f"
      D. "flight"

      Solution

      1. Step 1: Initialize prefix and loop through strings

        Start with prefix = "flower". Check "flow": prefix "flower" not prefix of "flow", shorten to "flowe", then "flow", which is prefix of "flow".
      2. Step 2: Check next string "flight"

        "flow" not prefix of "flight", shorten to "flo", then "fl", which is prefix of "flight".
      3. Final Answer:

        "fl" -> Option B
      4. Quick Check:

        Common start is "fl" = A [OK]
      Hint: Shorten prefix until it matches start of all strings [OK]
      Common Mistakes:
      • Returning first string without checking others
      • Not shortening prefix correctly
      • Confusing substring indices
      4. Identify the bug in this TypeScript function for longest common prefix:
      function longestCommonPrefix(strs: string[]): string {
        if (strs.length === 0) return "";
        let prefix = strs[0];
        for (let i = 1; i <= strs.length; i++) {
          while (strs[i].indexOf(prefix) !== 0) {
            prefix = prefix.substring(0, prefix.length - 1);
            if (prefix === "") return "";
          }
        }
        return prefix;
      }
      medium
      A. Use prefix.includes() instead of indexOf()
      B. Prefix should be initialized as empty string
      C. Loop condition should be i < strs.length, not i <= strs.length
      D. Return type should be string[] instead of string

      Solution

      1. Step 1: Check loop boundary

        The loop uses i <= strs.length, which causes out-of-bounds access at i = strs.length.
      2. Step 2: Correct loop condition

        Change to i < strs.length to avoid accessing undefined element.
      3. Final Answer:

        Loop condition should be i < strs.length, not i <= strs.length -> Option C
      4. Quick Check:

        Array index out of bounds = C [OK]
      Hint: Use < not <= for zero-based array loops [OK]
      Common Mistakes:
      • Off-by-one error in loop condition
      • Initializing prefix incorrectly
      • Misusing string methods
      5. Given the array ["interview", "interval", "internal", "internet"], what is the longest common prefix? Also, explain why the prefix stops where it does.
      hard
      A. "inte" because all strings start with these four letters
      B. "in" because only first two letters are common
      C. "int" because the sixth letter differs in some strings
      D. "inter" because all strings start with these five letters

      Solution

      1. Step 1: Compare characters one by one

        Check each character index across all strings: 'i', 'n', 't', 'e', 'r' are common in all.
      2. Step 2: Identify where mismatch occurs

        At index 5, 'v' in "interview" and "interval", but 'n' in "internal" and "internet", so prefix stops at "inter".
      3. Final Answer:

        "inter" because all strings start with these five letters -> Option D
      4. Quick Check:

        Common start "inter" = B [OK]
      Hint: Check each character position until mismatch found [OK]
      Common Mistakes:
      • Assuming prefix is longer than actual common part
      • Ignoring character positions carefully
      • Confusing similar but different letters
      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