编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。

示例 1:

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

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix

 

分析:

方法1:找到最短的的字符串,然后拿最短字符串的每个字母去所有字符串中验证(验证该字符在每个字符串中都存在)

时间复杂度:O(S),S为所有字符串中字符数量的总和

最好情况:O(N*minL),N为字符串数量,minl为最短字符串的数量

最坏情况:O(N*M)(N个长度为M的相同字符串)

空间复杂度:O(1)

 

方法2:找到最短字符串,然后对最短字符串的长度进行二分,每次得到长度mid,就去验证长度mid是否符合要求(验证方法:看看所有字符串的前mid个字符是否相同)

时间复杂度:O(S*log(minl)),S为所有字符串的字符数量,minl为最短字符串的长度

空间复杂度:O(1)

 

方法1:

class Solution {
public:
string longestCommonPrefix(vector<string>& v)
{
int n=v.size();
if(n==)
return "";
if(n==)
return v[];
int minl=INT_MAX;
int index=;
for(int i=;i<n;i++)
{
int k=v[i].size();
if(k<minl)
{
minl=k;
index=i;
}
}
string ans;
for(int j=;j<=minl;j++)
{
for(int i=;i<n;i++)
{
if(v[i][j]==v[index][j])
continue;
else
return ans;
}
ans+=v[index][j];
}
return ans;
}
};

方法2:

class Solution {
public:
string longestCommonPrefix(vector<string>& v)
{
int n=v.size();
if(n==)
return "";
if(n==)
return v[];
if(n==&&v[]==v[])
return v[];
int minl=v[].length();
for(int i=;i<n;i++)
{
int k=v[i].size();
if(v[i][]!=v[i-][])
return "";
if(k==)
{
return "";
}
if(k<minl)
{
minl=k;
}
}
string ans=v[].substr(,);
int start=;
int end=minl;
while(start<=end)
{
int mid=(start+end)/;
string str=v[]; int flag=;
for(int i=;i<n;i++)
{
if(str.substr(,mid)!=v[i].substr(,mid))
{
flag=;
break;
}
}
if(flag==)
{
start=mid+;
ans=str.substr(,mid);
}else
{
end=mid-;
}
}
return ans;
}
};

 

【LeetCode】最长公共前缀【二分】的更多相关文章

  1. leetcode 最长公共前缀

    编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串"". 示例 1: 输入: ["flower","flow" ...

  2. LeetCode 最长公共前缀(探索字节跳动)

    题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow ...

  3. 每日一道 LeetCode (5):最长公共前缀

    前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee: https://gitee.com ...

  4. LeetCode 14 Longest Common Prefix(最长公共前缀)

    题目链接:https://leetcode.com/problems/longest-common-prefix/?tab=Description   Problem: 找出给定的string数组中最 ...

  5. LeetCode:最长公共前缀【14】

    LeetCode:最长公共前缀[14] 题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flo ...

  6. 【LeetCode】Longest Common Prefix(最长公共前缀)

    这道题是LeetCode里的第14道题. 题目描述: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["f ...

  7. 【Leetcode】【简单】【14最长公共前缀】【JavaScript】

    题目 14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower",& ...

  8. LeetCode刷题-最长公共前缀(简单)

    题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow ...

  9. # Leetcode 14:Longest Common Prefix 最长公共前缀

    公众号:爱写bug Write a function to find the longest common prefix string amongst an array of strings. If ...

随机推荐

  1. js去除数组中重复的数字

    var arr = [2,1,4,3,2,4,2,3,4,2,6,5,5] var obj = {}; var arrNew = []; for(var i=arr.length-1;i>=0; ...

  2. LeetCode 1049. Last Stone Weight II

    原题链接在这里:https://leetcode.com/problems/last-stone-weight-ii/ 题目: We have a collection of rocks, each ...

  3. OI歌曲汇总

    在学习的间隙,我们广大的OIer创作了许多广为人知的歌曲 这里来个总结 (持续更新ing......) Lemon OI 葛平 Lemon OI chen_zhe Lemon OI kkksc03 膜 ...

  4. [RN] React Native 使用 React-native-scrollable-tab-view 实现 类头条 新闻页头部 效果

    React Native 使用 React-native-scrollable-tab-view 实现 类头条 新闻页效果 效果如下: 一.安装依赖 npm install react-native- ...

  5. 特征缩放(Feature Scaling)

    特征缩放的几种方法: (1)最大最小值归一化(min-max normalization):将数值范围缩放到 [0, 1] 区间里 (2)均值归一化(mean normalization):将数值范围 ...

  6. linux命令之------Tar解压缩

    Tar解压缩 作用:将解压缩后缀名为tar的压缩包 -f<备份文件>或—file=<备份文件>指定备份文件 -v或-verbose显示指令执行过程 -x或-extract或-g ...

  7. Java面试集合(三)-30道面试题

    前言 大家好,我是 Vic,今天给大家带来Java面试集合(三)的概述,希望你们喜欢 三 1.在Java中是否可以含有多个类?答:可以含有多个类,但只有一个是public类,public类的类名与文件 ...

  8. Python 企业面试题集锦之Python基础

    △字符串.列表.元组.字典每个常用的5个方法? 字符串: 字符串用单引号(')或双引号(")括起来,不可变. s.strip(c):去除空格或指定的字符c:lstrip/rstrip: s. ...

  9. vue Uncaught SyntaxError: Unexpected token < 报错

    这个问题是因为项目中出现没有闭合的标签,如<img src="">  需改成<img src="xxx.png"/>

  10. hadoop jps不显示信息

    使用kvm做了一个hadoop组件的镜像,使用该镜像启动,在使用jps的时候,没有任何信息显示. 解决: 删除/tmp下的hsper开头文件,哪个用户没有权限就删除对应的hsper**_usernam ...