14-最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。


示例

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"
示例 2:

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

解法

暴力法-双重循环

核心思想:分别对比每个元素的每个相同位置的字母,不同即返回结果

class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
res = ""
if len(strs)==0:
return res
#i的范围:[0,最短的字符串长度]
#j的范围:[0,字符串的数量-1]
for i in range(len(min(strs, key=len))):
for j in range(len(strs)-1):
if strs[j][i] != strs[j+1][i]:
return res
res += strs[0][i]
return res

利用特殊函数-zip和set

keypoint:

1.*进行解包;

2.zip打包成列表;

3.set列表去重

class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
res = ""
# 使用*解包将每一位的字符分别打包成一个列表
for i in zip(*strs):
# 去重后列表只剩一个元素
if len(set(i)) == 1:
res += i[0]
else:
break
return res

来源

LeetCode中该题地址,Click here!

-------------本文结束感谢您的阅读-------------