【Leetcode】14. 最长公共前缀 (Longest Common Prefix)

二、No14. 最长公共前缀

题目

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

示例 1

  • 输入:strs = [“flower”,“flow”,“flight”]
  • 输出:“fl”

示例 2

  • 输入:strs = [“dog”,“racecar”,“car”]
  • 输出:""
  • 解释:输入不存在公共前缀。

提示

  • 0 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

解题代码(Python3)

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if len(strs) == 0:
            return ""
        def verify(a,i):
            for x in strs:
                if x[i] != a:
                    return False
            return True
        minIndex = 0
        for i in range(len(strs)):
            minIndex = i if len(strs[minIndex]) > len(strs[i]) else minIndex
        for i,x in enumerate(strs[minIndex]):
            if verify(x,i) !=True:
                return strs[minIndex][:i]
        return strs[minIndex] 

思路:

首先定义verity方法,作用是判别每个字符串在i位置的元素是否为a,然后先求出数组中最短的字符串的位置minIndex,然后对整体List进行遍历用verity方法进行验证。

复杂度分析:

  • 时间复杂度O(n^2)
  • 空间复杂度O(1)

运行结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Xiao_Spring/article/details/113666927