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

No.14 最长公共前缀  

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

难度指数:简单

示例:

1.示例 1:

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

输出: "fl"

2.示例 2:

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

输出: ""

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

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

思路一:利用re模块

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

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


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

思路二:逐字符比较

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

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

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

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


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

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


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

上一篇:GitHub 与 git 笔记 。


下一篇:Leetcode打卡 | No.009 回文数