「LeetCode系列」最长公共前缀问题|刷题打卡

70 阅读1分钟

作者:看那个码农

公众号:看那个码农

本题来源于「LeetCode系列」14. 最长公共前缀

题目描述:

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

如果不存在公共前缀,返回空字符串 ""。

示例 :

输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:

输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

提示:

  1. 0 <= strs.length <= 200
  2. 0 <= strs[i].length <= 200
  3. strs[i] 仅由小写英文字母组成

代码分析

此题可以先找出数组中字典序最小和最大的字符串,最长公共前缀即为这两个字符串的公共前缀。

可能这个时候你会问字典序是什么:

字符串的字典序即比较当前字符大小,
若当前字符小则此字符串较小,若相等则继续往后比较,
直到某一字符不相等或某一字符串比较结束,比较结束都相等,则长度小的字符串较小。

在这里若输入为
a, cd, abcd, 第一个字符分别是 a,c,a, 

第一轮比较
c字符大于a字符,所以在比较中
第二个字符串cd最大,

第二轮比较,a已经没有了,abcd经过刚才比较还剩bcd
a,cd abcd排序的话
cd最大,a最小 

公共前缀为"",

即代表没有相等的,为空

所以我们的代码为

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if not strs:
            return ""
        str0=min(strs)
        str1=max(strs)
        for i in range(len(str0)):
            if str0[i]!=str1[i]:
                return str0[:i]
        return str0

如果你觉得这篇内容对你有帮助的话:

1、点赞支持下吧,让更多的人也能看到这篇内容

2、关注公众号:看那个码农,我们一起学习一起进步。

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情