leetcode题目分类_最长前缀匹配例题

leetcode题目分类_最长前缀匹配例题原题链接编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,”flow”,”flight”]输出:”fl”示例 2:输入:strs = [“dog”,”racecar”,”car”]输出:””解释:输入不存在公共前缀。 提示:0 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成题解分

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

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

示例 1:

输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:

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

提示:

0 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成

题解

  1. 分治,时间复杂度O(mn)
class Solution { 
   
public:
    string com(string a,string b){ 
   
        int len = min(a.size(),b.size());
        int i = 0;
        while(i < len && a[i] == b[i])i ++;
        return a.substr(0,i);
    }
    string div(vector<string> &strs,int l,int r){ 
   
        if(l < r){ 
   
            int mid = l + r >> 1;
            string left = div(strs,l,mid);
            string right = div(strs,mid + 1,r);
            int len = min(left.size(),right.size());
            int i = 0;
            while(i < len && left[i] == right[i])i ++;
            return left.substr(0,i);
        }else return strs[l];
    }
    string longestCommonPrefix(vector<string>& strs) { 
   
        if(!strs.size())return "";
        return div(strs,0,strs.size() - 1);
    }
};
  1. 二分,时间复杂度O(mnlogm)
class Solution { 
   
public:
    bool check(vector<string>strs,int x){ 
   

        for(int i = 0;i <= x;i ++){ 
   
            for(int j = 1;j < strs.size();j ++){ 
   
                if(strs[j][i] != strs[0][i])return false;
            }
        }
        return true;
    }
    int min(int x,int y){ 
   
        return x < y ? x : y;
    }
    string longestCommonPrefix(vector<string>& strs) { 
   
        if(!strs.size())return "";
        int mlen = strs[0].size();
        for(int i = 1;i < strs.size();i ++)mlen = min(mlen,strs[i].size());
        int l = -1,r = mlen - 1;
        while(l < r){ 
   
            int mid = (l + r + 1)>> 1;
            if(check(strs,mid))l = mid;
            else r = mid - 1;
        }
        return strs[0].substr(0,l + 1);
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168886.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm安装使用_anaconda环境变量配置

    pycharm安装使用_anaconda环境变量配置1.打开AnacondaPrompt,进入虚拟环境condaactivateTF1.142.安装pyinstaller,在anaconda中输入pipinstallPyInstaller3.在pycharm中配置pyinstaller打开Pycharm,进入settings按下图操作3.1点击ExternalTools3.2点击新建3.3输入任意名称3.4在E:\RuanJian\Anaconda\anzhuang\envs\TF1.14\Scripts\路径

    2022年8月26日
    4
  • Postman安装教程_postman需要联网吗

    Postman安装教程_postman需要联网吗1.官网安装(别看)打开官网,https://www.getpostman.com安装很麻烦还很容易安装失败(先请擦掉眼泪,不要忧伤,我们依然可以好好的)2.非官网安装这是一种直接通过打包已经安装的扩展程序的方式,来进行我认为的「非法安装」,但没办法,只能这样。我会给你一个安装包,见附件。你应该下载下来,解压缩到你喜欢的位置。(解压的位置自己要记得)安装包(Postman4.1.2下载地址:http://files.cnblogs.com/files/mafly/postman-4

    2022年9月17日
    4
  • plotyy函数_Matlab plotyy函数的使用及问题总结「建议收藏」

    plotyy函数_Matlab plotyy函数的使用及问题总结「建议收藏」Matlabplotyy函数的使用及问题总结1.新建一个.m文件,文件名为plotyy.m,并为其填写代码如下:x=0:0.001:20;y1=200*exp(-0.05*x).*sin(x);y2=0.8*exp(-0.5*x).*sin(10*x);holdon;[AX,H1,H2]=plotyy(x,y1,x,y2,@plot);%获取坐标轴、图像句柄set(get(AX(1),’yl…

    2022年6月18日
    30
  • 第八章:activiti多用户任务分配

    第八章:activiti多用户任务分配第八章:activiti多用户任务分配

    2022年4月23日
    129
  • 空格html代码快捷键,html的空格代码怎么写?教你如何使用空格nbsp代码[通俗易懂]

    空格html代码快捷键,html的空格代码怎么写?教你如何使用空格nbsp代码[通俗易懂]本篇文章为大家介绍的是HTML的空格代码的写法,“&nbsp;”代码的用法,还有几种空格方式的解释,都在文章中,现在开始往下看吧。首先,我们知道这HTML网页中插入多个空格间隔是需要特殊字符编码的。如果是直接敲入多个空格键的话,虽然看似代码中有了多个空格效果,但其实在浏览器中还是只有1个空格间隔位置的。接下来教大家如果输入html空格字符的话,多个空格字符是如何输入的?我们采用直接复制空格…

    2022年9月22日
    2
  • S3C2440时钟配置「建议收藏」

    S3C2440时钟配置「建议收藏」首先来看一下S3C2440的时钟整体框图:CPU工作于FCLKFCLKUPTO400MHZAHB工作于HCLKHCLKUPTO136MHZAPB工作于PCLKPCLKUPTO68MHZ如何得到以上时钟频率(时钟源:12M晶振):通过PLL锁相环可以得到以上3个所需要的时钟S3C2440有两个PLL一个MPLL是提供时钟给CPU用另一个UPLL提…

    2022年5月15日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号