Leetcode打卡 | No.014 最长公共前缀

简介: 欢迎和小詹一起定期刷leetcode,每周一和周五更新一题,每一题都吃透,欢迎一题多解,寻找最优解!这个记录帖哪怕只有一个读者,小詹也会坚持刷下去的!

No.14 最长公共前缀  

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

难度指数:简单

示例:

1.示例 1:

输入: ["flower","flow","flight"]

输出: "fl"

2.示例 2:

输入: ["dog","racecar","car"]

输出: ""

解释: 输入不存在公共前缀。

分析:这里小詹第一反应想到了两种思路。第一是利用正则匹配的方法,我们用过一个强大的模块,叫做re模块,爬妹子时想必很熟练吧……第二种是将数组中所有字符串从第一个字符开始依次对比。具体如下。

思路一:利用re模块

这里首先将第一个字符串(如果不为空数组的前提下)用来与其他字符串依次匹配,如果遇到无法匹配的,则将其尾部去掉一个字符再进行匹配。直到遍历匹配结束后,返回最后的结果(代码中的prefix)

30.jpg


这一思路简单易行,有点不明白的是,效率很低居然才beat38%左右。

思路二:逐字符比较

这一思路比较容易想到,实现起来也不复杂。步骤简单概括起来是

  1. 考虑极端情况(数组中字符串个数为0或1)
  2. 求取数组中最短字符串的长度(代码中提供了两种方法)
  3. 从最短字符串的第一个字符开始,依次将所有字符与其他所有字符串对应位置的字符比较。

代码如下所示,有详细注释:

31.jpg


这一思路简单粗暴,结果却是非常的nice!!!

32.jpg


这一期题目比较简单。代码已分享到QQ群和leetcode微信群内。

相关文章
|
6月前
|
机器学习/深度学习 Java
LeetCode 14. 最长公共前缀
LeetCode 14. 最长公共前缀
59 1
|
6月前
|
Python
leetcode-14:最长公共前缀
leetcode-14:最长公共前缀
44 0
【Leetcode-13.罗马数字转整数 -14.最长公共前缀】
【Leetcode-13.罗马数字转整数 -14.最长公共前缀】
52 0
|
1月前
|
算法
Leetcode第十四题(最长公共前缀)
这篇文章介绍了一种算法,用于在给定的字符串数组中找到最长公共前缀,通过逐字符比较每个字符串的对应位置,一旦发现不匹配立即返回当前已匹配的子串作为公共前缀。
24 0
|
3月前
|
算法
LeetCode第14题最长公共前缀
该文章介绍了 LeetCode 第 14 题最长公共前缀的解法,通过取一个字符串作为基准,一列一列字符比较来找出最长公共前缀,时间复杂度为 O(m * n),同时提到也可使用二分查找法,但代码复杂度会上升。
LeetCode第14题最长公共前缀
|
5月前
|
存储 算法 Java
【经典算法】LeetCode14:最长公共前缀(Java/C/Python3实现含注释说明,Easy)
【经典算法】LeetCode14:最长公共前缀(Java/C/Python3实现含注释说明,Easy)
43 1
|
5月前
|
算法
力扣经典150题第二十题:最长公共前缀
力扣经典150题第二十题:最长公共前缀
29 0
|
6月前
【力扣】14. 最长公共前缀
【力扣】14. 最长公共前缀
|
6月前
|
C++ 索引
【力扣经典面试题】14. 最长公共前缀
【力扣经典面试题】14. 最长公共前缀
|
6月前
|
算法 Java
[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读
[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读
46 0