题目来源
https://leetcode-cn.com/problems/longest-common-prefix/
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
我的做法
class Solution:
def longestCommonPrefix(self, strs):
res = ""
strs1 = sorted(strs,key = lambda i:len(i))
if strs1==[]:
return res
for i in range(len(strs1[0])):
if len(set([s[i] for s in strs1])) == 1:
res += strs[0][i]
else:
break
return res
评论区做法
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
if not strs:
return ''
if len(strs) == 1:
return strs[0]
#通过解包,然后使用zip进行并行扫描。扫描次数只会按照最短的一个字符计算
common_prefix, sequences = '', zip(*strs)
for i, v in enumerate(sequences):
#取出的第一元素中的共同扫描的字符
char = v[0]
#判断并行扫描中,其余同样位置的字符是否和这个字符相等
for j in range(1, len(v)):
if v[j] != char:
return common_prefix
#全部相等,共同前缀加上这个字符
common_prefix += strs[0][i]
return common_prefix