【Leetcode合集】14. 最长公共前缀

14. 最长公共前缀

14. 最长公共前缀

代码仓库地址: https://github.com/slience-me/Leetcode

个人博客 :https://slienceme.xyz

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

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

示例 1:

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

示例 2:

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

提示:

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

方案1:暴力解 历史最差代码没有之一

第一种纯暴力解,很多不合理的地方,考场上只是为了拿基础分,就是结果导向性解题方式

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {if (strs[0] == ""){return "";}int maxsize = -1;for (const auto &item: strs){maxsize = max(maxsize, static_cast<int>(item.size()));}string res;for (int i = 0; i < maxsize; ++i) {char temp = strs[0][i];string tmp ;for (int j = 0; j < strs.size(); ++j) {if (temp == strs[j][i]){cout<<"temp: "<<temp<<"   strs[j][i]: "<<strs[j][i]<<"  i: "<<i<<" j: "<<j<<endl;tmp = strs[j][i];} else {tmp = "";goto outerLoop; // 跳到外层循环的标签位置}}res.append(tmp);}outerLoop:return res;}
};

执行用时分布 48ms 击败6.69%使用 C++ 的用户

消耗内存分布9.37MB 击败15.46%使用 C++ 的用户

方案2

初次优化,这种方案比上一种更加合理,去除掉了很多冗余的代码
i >= s.length()关键条件 s[i] != tmp

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {string res;for (int i = 0; i < 200; ++i) {if (i > strs[0].length())return res; //处理空情况char tmp = strs[0][i];for (const auto &s: strs) {if (i >= s.length())return res;// 超出了,则说明当前字符串长度不够 flower flow  i=5 >= 4if (s[i] != tmp)return res;}res += tmp;}return res;}
};

执行用时分布 0ms 击败100%使用 C++ 的用户

消耗内存分布 9.04MB 击败63.16%使用 C++ 的用户

方案3

最后的优化,没有太大的提升

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {string ans = "";// 用第一个单词的字符一次遍历全部字符串for (int i = 0; i < strs[0].size(); ++i) {bool flag = true;for (int j = 1; j < strs.size(); ++j) {if (i >= strs[j].size() || strs[j][i] != strs[0][i]) {flag = false; // 合二为一break; // 退出里循环}}if (flag) {ans += strs[0][i];} else {break; // 退出外循环}}return ans;}
};

执行用时分布 4ms 击败%使用 C++ 的用户

消耗内存分布 9.12MB 击败46.03%使用 C++ 的用户

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/164113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【UE】用样条线实现测距功能(下)

目录 效果 步骤 一、实现多次测距功能 二、通过控件蓝图来进行测距 在上一篇&#xff08;【UE】用样条线实现测距功能&#xff08;上&#xff09;&#xff09;文章基础上继续实现多次测距和清除功能。 效果 步骤 一、实现多次测距功能 打开蓝图“BP_Spline”&#xff0c…

cherry pick的使用

https://blog.csdn.net/weixin_55229531/article/details/128726872

SPS简单对应分析

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

Git如何修改提交(commit)用户名称(user.name)和邮箱(user.email)

Git用户名 Git查看用户名 git config user.name修改Git提交用户名 修改全局Git用户名 git config --global user.name "xx" 修改当前服务/项目Git用户名 git config user.name "xx"如果出现以下错误&#xff0c;解决方案如下&#xff1a; 错误案例&am…

量子计算概述

目录 1.量子计算介绍 2.量子计算应用 3.量子计算研究机构 1.量子计算介绍 量子计算是一种遵循量子力学规律调控量子信息单元进行计算的新型计算模式。经典计算使用2进制进行运算&#xff0c;但2进制只有0和1两种状态&#xff0c;而量子计算除了包含0和1两种状…

C百题--6.输出C

1.问题描述 输出“C”样式的字符 2.解决思路 1.用printf(&#xff09;逐行输出&#xff1b; 2用循环一部分一部分输出 3.代码实现 #include<stdio.h> int main(){for(int i0;i<5;i){printf("*"); }printf("\n");for(int i0;i<2;i){printf…

OpenStack云计算平台-镜像服务

目录 一、镜像服务概览 二、安装和配置 1、先决条件 2、安全并配置组件 3、完成安装 三、验证操作 一、镜像服务概览 OpenStack镜像服务是IaaS的核心服务&#xff0c;如同 :ref:get_started_conceptual_architecture所示。它接受磁盘镜像或服务器镜像API请求&#xff0c;…

Redis Stream消息队列

什么是Stream? Stream 实际上是一个具有消息发布/订阅功能的组件&#xff0c;也就常说的消息队列。其实这种类似于 broker/consumer(生产者/消费者)的数据结构很常见&#xff0c;比如 RabbitMQ 消息中间件、Celery 消息中间件&#xff0c;以及 Kafka 分布式消息系统等&#x…

字符串匹配算法——KMP

有文本串aabaabaaf&#xff0c;模式串aabaaf问文本串中是否出现过模式串 暴力解法 最不用动脑子的&#xff0c;直接两层for循环&#xff0c;逐个匹配&#xff0c;匹配到不相等的值时把文本串后移一位&#xff0c;再重新比较。这种方法的复杂度是O(mn)&#xff0c;该方法低效的…

关键字const的修饰(指针)

A.const修饰变量 变量是可以修改的&#xff0c;如果把变量的地址交给⼀个指针变量&#xff0c;通过指针变量的也可以修改这个变量。 但是如果我们希望⼀个变量加上⼀些限制&#xff0c;不能被修改&#xff0c;怎么做呢&#xff1f;这就是const的作⽤。 #include <stdio.h&…

postpresql 查询某张表的字段名和字段类型

postpresql 查询某张表的字段名和字段类型 工作中第一次接触postpresql&#xff0c;接触到这么个需求&#xff0c;只是对sql有点了解&#xff0c;于是就网上查阅资料。得知通过系统表可以查询&#xff0c;设计到几张系统表&#xff1a;pg_class、pg_attrubute、information_sc…

axios二次封装配置请求拦截器和响应拦截器

我们为什么要对axios进行二次封装&#xff1f; 因为我们可以使用请求拦截器在发送请求之前处理一些业务&#xff0c;使用响应拦截器在服务器数据返回后处理一些业务。 我们通常创建一个api文件夹&#xff0c;再创建一个request.js文件&#xff0c;用于存放重写后的axios。 /…

SiP系统级封装、SOC芯片和合封芯片主要区别!合封和sip一样吗?

SiP系统级封装、SOC芯片和合封芯片技术是三种备受关注的技术。它们在提高系统性能、稳定性和功耗效率方面都发挥着重要作用 但在集成方式、应用领域和技术特点等方面存在一些区别。本文将从多个角度对这三种技术进行深入解读。 一、集成方式 合封芯片则是一种将多个芯片或不…

Vue弹窗的使用与传值

使用element-UI中的Dialog 对话框 vue组件结合实现~~~~ 定义html <div click"MyAnalyze()">我的区划</div><el-dialog title"" :visible.sync"dialogBiomeVisible"><NationalBiome :closeValue"TypeBiome" cl…

轻松入门Axios:前端开发中的HTTP利器

轻松入门Axios&#xff1a;前端开发中的HTTP利器 前言为什么选择Axios1. **简单易用:**2. **功能丰富:**3. **广泛支持的浏览器和环境:**4. **跨域支持:**5. **社区活跃:**6. **对于处理错误的友好性:**7. **对于并发请求的支持:** 安装与引用1. 使用 npm 安装 Axios&#xff1…

基于51单片机车载空调系统设计proteus仿真+源程序)

一、系统方案 1、本设计采用这51单片机作为主控器。 2、DS18B20采集温度值送到液晶1602显示。 3、按键设置报警值。 4、温度控制风扇档位。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 /T0初始化*/ void init_t0() { //TMOD0x01;//定时器…

数据库实验三 Sql多表查询和视图

数据库实验三 Sql多表查询和视图 一、Sql表二、在线练习 一、Sql表 www.db-book.com 二、在线练习 对所有表执行查询语句&#xff0c;查看有哪些数据。 select * from tableName; 一、执行以下查询语句&#xff0c;写出查询意图。 (1) select * from student,takes whe…

经典滑动窗口试题(一)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、将x减到0的最小操作数1、题目讲解2、讲解算法原理3、代码实现 二、无重复的最长子串1、题…

OpenCV数据类型及CV_16UC1深度图ros订阅

最近用到深度图,对其数据类型及显示有些迷惑,记笔记于此: 目录 一、cv::Mat 的数据类型及转换方式1. cv::Mat 数据类型2. cv::Mat 数据类型互转2.1 OpenCV数据类型转换的函数2.2 可视化深度图像(CV_16UC1)二、cv::Mat 与 sensor_msgs::msg::Image 互转(基于cv_bridge)1.…