Javascript Program To Find Longest Common Prefix Using Word By Word Matching
Given a set of strings, find the longest common prefix.
Examples:
Input : {“geeksforgeeks”, “geeks”, “geek”, “geezer”}
Output : "gee"
Input : {"apple", "ape", "april"}
Output : "ap"
We start with an example. Suppose there are two strings- “geeksforgeeks” and “geeks”. What is the longest common prefix in both of them? It is “geeks”.
Now let us introduce another word “geek”. So now what is the longest common prefix in these three words ? It is “geek”
We can see that the longest common prefix holds the associative property, i.e-
LCP(string1, string2, string3)
= LCP (LCP (string1, string2), string3)
Like here
LCP (“geeksforgeeks”, “geeks”, “geek”)
= LCP (LCP (“geeksforgeeks”, “geeks”), “geek”)
= LCP (“geeks”, “geek”) = “geek”
So we can make use of the above associative property to find the LCP of the given strings. We one by one calculate the LCP of each of the given string with the LCP so far. The final result will be our longest common prefix of all the strings.
Note that it is possible that the given strings have no common prefix. This happens when the first character of all the strings are not same.
We show the algorithm with the input strings- “geeksforgeeks”, “geeks”, “geek”, “geezer” by the below figure.
Below is the implementation of above approach:
Javascript
<script>
function commonPrefixUtil(str1, str2)
{
let result = "" ;
let n1 = str1.length,
n2 = str2.length;
for (let i = 0, j = 0; i <= n1 - 1 &&
j <= n2 - 1; i++, j++)
{
if (str1[i] != str2[j])
{
break ;
}
result += str1[i];
}
return (result);
}
function commonPrefix(arr,n)
{
let prefix = arr[0];
for (let i = 1; i <= n - 1; i++)
{
prefix = commonPrefixUtil(
prefix, arr[i]);
}
return (prefix);
}
let arr=[ "geeksforgeeks" , "geeks" ,
"geek" , "geezer" ];
let n = arr.length;
let ans = commonPrefix(arr, n);
if (ans.length > 0)
{
document.write(
"The longest common prefix is - " ,
ans);
}
else
{
document.write(
"There is no common prefix " );
}
</script>
|
Output :
The longest common prefix is - gee
Time Complexity : Since we are iterating through all the strings and for each string we are iterating though each characters, so we can say that the time complexity is O(N M) where,
N = Number of strings
M = Length of the largest string string
Auxiliary Space : To store the longest prefix string we are allocating space which is O(M).
Please refer complete article on Longest Common Prefix using Word by Word Matching for more details!
Last Updated :
03 Jan, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...