Leetcode每日一刷-14( 最长公共前缀)
第一种:
利用max()、min()函数取得最大值和最小值(这两个函数对字符串进行排序是根据ASLL按位排列的,越靠前越小,注意不根据字符串的长度判断)
例子:['abc', 'abbd','aba'] 最大‘abc’ 最小‘aba’ 从此可得 我们只需要判断最大与最小每个字母的不同就行
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
class Solution:
def longestCommonPrefix(self, strs):
if not strs:
return ""
first = max(strs)
last = min(strs)
for i,v in enumerate(last):
if v != first[i]:
return first[:i]
return last
l = ["alower","flow","flight"]
# l = ["dog","racecar","car"]
sol = Solution()
print(sol.longestCommonPrefix(l))
第二种:
class Solution:
def longestCommonPrefix(self, strs):
if not strs:
return ""
# 获得一个列表,每个元素以元组的形式保存,strs中每个字符串的每个字母去重后的结果,只有1个的说明每个字符串都有是我们需要的前缀
# zip(*strs)生成一个二维数组,注意组数由列表中字符串长度最短的决定
# map()函数,第一个参数是函数(操作方法),第二个是值(操作对象)
ss = list(map(set, zip(*strs)))
res = ""
for i, x in enumerate(ss):
# i 是值 x 是下标
x = list(x)
if len(x) > 1:
break
res = res + x[0]
return res
l = ["flower","flow","flight"]
# l = ["dog","racecar","car"]
sol = Solution()
print(sol.longestCommonPrefix(l))