题目:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
解答:
class Solution:
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
if len(strs) == 0:
return ''
elif len(strs) == 1:
return strs[0]
else:
b = sorted(strs, key=lambda x:len(x)) #按字符串的长度进行排序
s = ''
s1 = b[0]
for i, v in enumerate(s1): #对第一个字符串进行枚举,遍历其每一个字符
l = []
for j in b[1:]: #从第二个字符串开始遍历之后的所有字符串
l.append(v==j[i]) #将字符比较的bool值添加到列表l中
if all(l): #如果列表l中的所有值都为True
s += v
else:
break
return s
结果如下:
思路:
先按照字符串的长度对列表中的元素进行排序,然后根据第一个字符串(也就是长度最短的字符串),遍历其每一个字符,并将其每一个字符与之后的所有字符串分别进行比较,求得相同的字符。
用到的知识点:
函数sorted():对列表进行临时排序,能够按特定顺序显示列表元素,同时不影响它 们在列表中的原始排列顺序
函数lambda():其形式为 lambda argument_list: expression
其中,lambda是Python预留的关键字,argument_list和expression由用户自定义。这里的expression是一个关于参数的表达式。表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的。
输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值
函数enumerate():可以将一个可遍历的数据对象组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
方法append():在列表末尾添加元素,而不影响列表中的其他所有元素。