14. Longest Common Prefix
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
.
解法1:
class Solution:
def longestCommonPrefix(self, strs) :
"""
:type strs:List[str]
:rtype :str
"""
if not strs:
return ''
res=''
for i in range( 0,len(strs[0]) ):
for j in range(1,len(strs)):
if i>len(strs[j])-1 or strs[j][i] != strs[0][i]:
return res
res=res+strs[0][i]
return res
解法2:先将字符串数组排序,再对第一个数组元素和最后一个数组元素比较
class Solution:
def longestCommonPrefix(self, strs) :
"""
:type strs:List[str]
:rtype :str
"""
if not strs:
return ''
res=''
strs.sort()
for i in range( len(strs[0]) ):
if strs[-1][i]!=strs[0][i]:
return res
res=res+strs[0][i]
return res
解法3:使用zip函数实现矩阵的行列转换,set集合是包含无序的不重复元素。
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
class Solution:
def longestCommonPrefix(self, strs) :
"""
:type strs:List[str]
:rtype :str
"""
if not strs:
return ''
for i,char_group in enumerate(zip(*strs)) :
if len(set(char_group)) > 1:
return strs[0][:i]
return min(strs)