📖 Scenario: Imagine you work for a company that manages a list of product codes. You want to find the longest common starting letters shared by all product codes to group them easily.
🎯 Goal: You will write a TypeScript program that finds the longest common prefix (starting substring) among a list of product codes.
📋 What You'll Learn
Create an array of product codes
Create a variable to hold the longest common prefix
Write a function to find the longest common prefix among the product codes
Print the longest common prefix
💡 Why This Matters
🌍 Real World
Finding common prefixes helps group similar product codes, usernames, or file paths in many software applications.
💼 Career
Understanding string manipulation and loops is essential for software developers working with text data, search features, and data grouping.
Progress0 / 4 steps
1
Create the product codes array
Create an array called productCodes with these exact string values: "flower", "flow", "flight"
DSA Typescript
Hint
Use const to create an array named productCodes with the given strings.
2
Create a variable for the longest common prefix
Create a variable called longestPrefix and set it to an empty string ""
DSA Typescript
Hint
Use let to create a variable longestPrefix and assign it an empty string.
3
Write the function to find the longest common prefix
Write a function called findLongestCommonPrefix that takes an array of strings called codes and returns a string. Inside the function, use a for loop with variable i to iterate over characters of the first string in codes. Use another for loop with variable j to check if all strings have the same character at position i. If a mismatch is found, return the substring of the first string from 0 to i. If the loop finishes, return the entire first string.
DSA Typescript
Hint
Use nested for loops to compare characters at each position. Return the substring when a mismatch is found.
4
Find and print the longest common prefix
Call the function findLongestCommonPrefix with productCodes and assign the result to longestPrefix. Then print longestPrefix using console.log.
DSA Typescript
Hint
Assign the function result to longestPrefix and print it with console.log.
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
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 A
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
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 A
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
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 B
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
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 C
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
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 D
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 unknownstrongwhile earning +1 Grip toward your certificate.