【python实现】最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。

题目:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。

示例 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():在列表末尾添加元素,而不影响列表中的其他所有元素。

猜你喜欢

转载自blog.csdn.net/qq_41929011/article/details/87362066