No.14 最长公共前缀
原题:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""
。
难度指数:简单
示例:
1.示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
2.示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
分析:这里小詹第一反应想到了两种思路。第一是利用正则匹配的方法,我们用过一个强大的模块,叫做re模块,爬妹子时想必很熟练吧……第二种是将数组中所有字符串从第一个字符开始依次对比。具体如下。
思路一:利用re模块
这里首先将第一个字符串(如果不为空数组的前提下)用来与其他字符串依次匹配,如果遇到无法匹配的,则将其尾部去掉一个字符再进行匹配。直到遍历匹配结束后,返回最后的结果(代码中的prefix)
这一思路简单易行,有点不明白的是,效率很低居然才beat38%左右。
思路二:逐字符比较
这一思路比较容易想到,实现起来也不复杂。步骤简单概括起来是
- 考虑极端情况(数组中字符串个数为0或1)
- 求取数组中最短字符串的长度(代码中提供了两种方法)
- 从最短字符串的第一个字符开始,依次将所有字符与其他所有字符串对应位置的字符比较。
代码如下所示,有详细注释:
这一思路简单粗暴,结果却是非常的nice!!!
这一期题目比较简单。代码已分享到QQ群和leetcode微信群内。