Leetcode日记 14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。

Leetcode日记 14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:“”
解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成

  • 我的答案:首先去除两种特例,只有一个和空列表,在这之后根据列表的长度len来进行判断是否相等,在这之间我用了一个布尔类型变量stop来终止while循环
		if len(strs) == 0 :
            return ""
        if len(strs) == 1 :
            return strs[0]
        signal = len(strs)
        min_len = len(min(strs, key=len)) 
        i = 0
        stop = True
        while i < min_len and stop == True:
            signal_ = strs[0][i]
            for j in range(1,signal) :
                if signal_ == strs[j][i] :
                    if j == signal -1 :
                        i += 1
                else :
                    stop = False
                    break
        if i == 500 :
            return ""
        else :
            return strs[0][:i]
  • 提交通过,这个执行速度已经足够了8ms
    在这里插入图片描述

  • 我还看到了一个方法,这也是一个比较有趣的方法,都是最快的,他是通过双重for循环来进行判断,并且代码十分简练,不需要去除特例,很值得学习。

        for i in range(len(strs[0])):
            for str1 in strs:
                if len(str1)<=i:
                    return strs[0][:i]
                if str1[i]!=strs[0][i]:
                    return strs[0][:i]
        return strs[0]

制作不易,感谢三连,谢谢啦

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值