0.简介
记录LeetCode刷题过程,每篇分为四部分,题目描述、解题思路、参考代码、复杂度分析
如有疑问欢迎讨论,GitHub地址:https://github.com/LoneRanger0504/LeetCode
1.题目描述
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”
示例1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
提示:
所有输入只包含小写字母 a-z 。
2.解题思路
2.1暴力匹配
公共前缀的长度最大其实也就是数组中长度最短的字符串的长度,
因此我们可以先一遍遍历找到长度最短的字符串对应的位置,以他为标杆,再进行遍历
如果某个字符串的某一位和最短字符串的对应位相同,继续循环,直到所有的字符串的第i位都相同,加到公共前缀中
否则只要中间有一位不同,直接返回当前的最长公共前缀
注:评论中看到的思路,最长公共前缀其实就是最短的字符串与最长的字符串之间的公共前缀,根据上面的思路稍作修改,找到最长最短字符串,直接比较这两个就可以,整体时间复杂度还是O(N)