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))

猜你喜欢

转载自www.cnblogs.com/MinHuaiL/p/10742930.html
今日推荐