Objective: Write an algorithm to find The Longest Sequence Of Prefix Shared By All The Words In A String. This interesting problem was asked in the Google interview for software engineer. This problem is bit tricky, it looks difficult but actually it is simple problem.
Input: A String
Output: The longest sequence of prefix common in all the words in a string
Example:
“Bedroom BedClock BedTable BedWall” => “Bed”
Approach:
- Split the input by blank space and store it in arrA[].
- Create int resultLen and store the first index string length in it (int resultLen = arrA[0].length())
- Create another interger variable, int curr
- Now run a loop in rest of the array.
- Check if curr < resultLen and curr<length of current string in a loop
- If so check if character at curr position matched in first index string and with the current string a loop, if so, increase curr by 1
- Change resultLen = curr
- Return substring of resultLen length
Code:
Output:
Original String : Sumit Summation Summit Sum Common Prefix is : Sum
Good start.
But i see some code not appropriate. I believe if the code is run on this
Sumit Muthu Summation Summit Sum, it will not give desired output. You need to tweak your while loop.
while (curr < resultLen && curr < arrA[i].length()
&& arrA[0].charAt(curr) == arrA[1].charAt(curr))
you have to keep track of prev and compare the curr with that, not just [0] and [1]
Thanks Muthu for pointing it out, i had put “1” instead of “i”. Corrected it
Sumit
Your code fails for {“a”, “a”, “b”} The output should be “” but your code give “a” as output !
Correct me if i am wrong!!