tag-字符串:最长公共前缀

题目

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

示例

在这里插入图片描述

题解一

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        # 按照字典顺序找到strs中最大的字符串和最小的字符串
        str0 = min(strs)
        str1 = max(strs)

        for i in range(len(str0)):
            # str0和str1如果本身就没有相同前缀,那么直接返回空字符串
            # str0和str1如果本身有相同前缀,那么能保证strs中所有字符串都存在相同前缀,这是min和max决定。此时只需要找到从哪里不一样就行了。决定最大相同前缀的最大长度取决于min,比如[‘apple’,‘apples’],str0=‘apple’,str1=‘apples’
            if str0[i]!=str1[i]:
                return str0[:i]
        return str0

在这里插入图片描述

题解二

# zip(*strs) 是 Python 中的一个常见技巧,它被用来将多个可迭代对象(比如列表)中对应位置的元素打包成一个元组的迭代器。
# 在这个特定的例子中,strs 是一个字符串列表,*strs 表示将列表中的元素分别传递给 zip() 函数,而不是将整个列表作为一个单独的参数传递。
# 假设 strs 是 ["abc", "def", "ghi"]。zip(*strs) 实际上等价于 zip("abc", "def", "ghi"),它将返回一个迭代器,包含了三个元组 ('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')。
class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        s = ""
        for i in zip(*strs):
            if len(set(i)) == 1:
                s += i[0]
            else:
                # 遇到不等于1的直接跳出循环
                break           
        return s    

在这里插入图片描述

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值