最长公共前缀
链接:题目链接
题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
解题思路 — 纵向扫描,同一列每一行
一开始想着可以直接用zip啊,纵向扫描思想确实是这样的,但是你要多少个变量来接受zip呢,这里就不好下手
所以我们想到用any函数,any的参数是一个Iterable可迭代的对象
字符串为空的进行特判即可,否则,我们遍历第一个字符串,用any来对其他行的字符串的那一列进行对比,还有要注意这里有短板效应
代码实现
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
# 纵向扫描
if not strs:
return ""
length, count= len(strs[0]),len(strs)
res_list = ["" for _ in range(length)]
for i in range(length):
c = strs[0][i]
# 下面这行代码表示有可能有其他行的字符串很短
# any的用法要注意,里面有个Iterable对象
if any(i==len(strs[j]) or strs[j][i] != c for j in range(1,count)):
return strs[0