14. 最长公共前缀
难度-----简单
题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
提示:所有输入只包含小写字母 a-z 。
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
一、扫描(竖列)
首先考虑遍历所有字符串的第一个元素,然后依次往下,直到有一个字符串不满足,退出,返回
for i in range(len(strs[0])):
for j in strs:
if j.startswith(strs[0][:i])==False:
return strs[0][:i-1]
考虑列表为空
if len(strs) == 0:
return ''
else:
for i in range(len(strs[0])):
for j in strs:
if j.startswith(strs[0][:i])==False:
return strs[:i-1]
再考虑列表只有一个元素时无法比较,所以
if len(strs) == 0:
return ''
elif len(strs) == 1:
return strs[0]
else:
for i in range(len(strs[0])):
for j in strs:
if j.startswith(strs[0][:i])==False:
return strs[:i-1]
最后考虑字符串长度可能为零且循环可能在最后跳出而不返回值,所以给‘len(strs[0])’+1并在大循环后‘手动’返回
if len(strs) == 0:
return ''
elif len(strs) == 1:
return strs[0]
else:
for i in range(len(strs[0])+1):
for j in strs:
if j.startswith(strs[0][:i])==False:
return strs[0][:i-1]
return strs[0][:i]
结果