题目如下:
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。
示例 1: 输入:strs = ["flower","flow","flight"] 输出:"fl"
方法一:假设法
def LongestCommonPrefix(strs):
ret = ''
for i in range(0, len(strs[0])):
ret = strs[0][:i + 1]
for j in strs:
# 假设通过则继续
if j[:i + 1] == ret:
continue
else:
# 假设不通过则去掉新加的字符,并返回
return strs[0][:i]
return ret
方法二:利用Python内置函数max(),min()
def longestCommonPrefix(strs):
if not strs:
return ""
# max(),min()可按照ascii值对字符串进行比较
s1 = max(strs)
s2 = min(strs)
# 寻找s1,s2公共前缀即可
for idx, s in enumerate(s2):
if s != s1[idx]:
return s2[:i]
return s2
方法三:利用Python内置函数zip()
def longestCommonPrefix(strs):
if not strs:
return ""
ret = ''
# 将每个元素的每个字符左对齐打包,利用set()去重后长度为1的则为公共前缀
for i in zip(*strs):
if len(set(i)) == 1:
ret += i[0]
else:
return ret
return ret