作者:看那个码农
公众号:看那个码农
本题来源于「LeetCode系列」14. 最长公共前缀
题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 :
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
- 0 <= strs.length <= 200
- 0 <= strs[i].length <= 200
- 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 春招闯关活动」, 点击查看 活动详情