Discover how a simple trick saves you from endless letter comparisons!
Why Longest Common Prefix in DSA Typescript?
Imagine you have a list of words like 'flower', 'flow', and 'flight'. You want to find the common beginning part of these words by checking each letter one by one manually.
Doing this by hand or with simple loops is slow and error-prone because you have to compare each character of every word repeatedly. It's easy to miss differences or waste time checking unnecessary letters.
The Longest Common Prefix method quickly finds the shared starting letters among all words by smartly comparing characters only as needed, saving time and avoiding mistakes.
function findPrefix(words: string[]): string {
let prefix = '';
for (let i = 0; i < words[0].length; i++) {
for (let word of words) {
if (word[i] !== words[0][i]) return prefix;
}
prefix += words[0][i];
}
return prefix;
}function longestCommonPrefix(words: string[]): string {
if (!words.length) return '';
let prefix = words[0];
for (let i = 1; i < words.length; i++) {
while (!words[i].startsWith(prefix)) {
prefix = prefix.slice(0, -1);
if (!prefix) return '';
}
}
return prefix;
}This lets you quickly find the shared start of many words, which is useful in search, autocomplete, and grouping similar items.
When you type in a search box, the system suggests words that start the same way you typed. Longest Common Prefix helps find that shared start fast.
Manual letter-by-letter checks are slow and error-prone.
Longest Common Prefix efficiently finds shared beginnings among words.
This method speeds up tasks like autocomplete and grouping.
Practice
Solution
Step 1: Understand the prefix concept
A prefix is a substring at the start of a string.Step 2: Define longest common prefix
The LCP is the longest substring starting from the beginning that all strings share.Final Answer:
The longest starting substring common to all strings -> Option AQuick Check:
Prefix means start of string = B [OK]
- Confusing prefix with suffix
- Looking for substring anywhere, not just start
- Choosing shortest string as prefix
Solution
Step 1: Identify input type
The input should be an array of strings, so type is string[].Step 2: Identify output type
The output is the longest common prefix, a string.Final Answer:
function longestCommonPrefix(strs: string[]): string -> Option AQuick Check:
Input array of strings, output string = D [OK]
- Using number[] instead of string[]
- Returning array instead of string
- Passing single string instead of array
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"]));Solution
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".Step 2: Check next string "flight"
"flow" not prefix of "flight", shorten to "flo", then "fl", which is prefix of "flight".Final Answer:
"fl" -> Option BQuick Check:
Common start is "fl" = A [OK]
- Returning first string without checking others
- Not shortening prefix correctly
- Confusing substring indices
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;
}Solution
Step 1: Check loop boundary
The loop uses i <= strs.length, which causes out-of-bounds access at i = strs.length.Step 2: Correct loop condition
Change to i < strs.length to avoid accessing undefined element.Final Answer:
Loop condition should be i < strs.length, not i <= strs.length -> Option CQuick Check:
Array index out of bounds = C [OK]
- Off-by-one error in loop condition
- Initializing prefix incorrectly
- Misusing string methods
["interview", "interval", "internal", "internet"], what is the longest common prefix? Also, explain why the prefix stops where it does.Solution
Step 1: Compare characters one by one
Check each character index across all strings: 'i', 'n', 't', 'e', 'r' are common in all.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".Final Answer:
"inter" because all strings start with these five letters -> Option DQuick Check:
Common start "inter" = B [OK]
- Assuming prefix is longer than actual common part
- Ignoring character positions carefully
- Confusing similar but different letters
Ready to prove it?
Pass the test and this pattern moves unknown
