题目描述

Write a function to find the longest common prefix string amongst an array of strings.

写一个方法返回一个字符串数组的最长公共前缀。

原文地址

思路方法

公共前缀子串,那每个字符串肯定都包含有,并且在头部。
把数组中最短的字符串作为默认的公共子串,然后依次与每一个字符串对比,计算所有的最大匹配长度。

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        #如果数组为空,则直接返回
        if not strs:
            return ''
        #取值数组中最短的字符串,不然第一个for循环可能会越界
        first = min(strs)
        for i in range(len(first)):
            #依次和数组中每个字符串做对比
            for str in strs:
                if str[i] != first[i]:
                    #返回能匹配上的最大值
                    return first[:i] if i > 0 else ''
        return first

知识点

return first[:i] if i > 0 else ''
"""
python中没有类似C语言的三元条件表达式condition ? true_part : false_part,虽然Python没有三目运算符(?:),但有类似的替代方案,那就是true_part if condition else false_part。
"""


↙↙↙阅读原文可查看相关链接,并与作者交流