赞
踩
题目:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 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():在列表末尾添加元素,而不影响列表中的其他所有元素。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。