二、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)