Description
https://leetcode.com/problems/longest-common-prefix/description/
Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string ""
.
Example 1:
Input: ["flower","flow","flight"] Output: "fl"
Example 2:
Input: ["dog","racecar","car"] Output: "" Explanation: There is no common prefix among the input strings.
Note:
All given inputs are in lowercase letters a-z
.
Explanation
To find the longest common prefix string amongst an array of strings, we can declare a variable “longestCommonPrefix”. In the beginning, it initializes with the value of the first string of the input array. Then compare the “longestCommonPrefix” with all strings in the array to get the longest common prefix for all the strings.
Java Solution
class Solution { public String longestCommonPrefix(String[] strs) { if (strs == null || strs.length == 0) { return ""; } String longestCommonPrefix = strs[0]; for (int i = 1; i < strs.length; i++) { int j = 0; String currentString = strs[i]; while (j < longestCommonPrefix.length() && j < currentString.length() && longestCommonPrefix.charAt(j) == currentString.charAt(j)) { j++; } if (j == 0) { return ""; } longestCommonPrefix = longestCommonPrefix.substring(0, j); } return longestCommonPrefix; } }
Python Solution
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
longest_prefix = ""
if strs is None or len(strs) == 0:
return longest_prefix
if len(strs) == 1:
return strs[0]
first_word = strs[0]
for i in range(0, len(first_word) + 1):
prefix = first_word[0: i]
should_update_longest = True
for another_word in strs[1:]:
if (another_word[0: i] != prefix):
should_update_longest = False
break
if should_update_longest:
longest_prefix = prefix
else:
break
return longest_prefix
I found that solution very popular and helpful:
https://www.youtube.com/watch?v=ehRud05f-F0&ab_channel=EricProgramming