【力扣经典面试题】14. 最长公共前缀

目录

一、题目描述

二、解题思路

 三、解题步骤

四、代码实现(C++版详细注释)

五、总结


欢迎点赞关注哦!创作不易,你的支持是我的不竭动力,更多精彩等你哦。

一、题目描述

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

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

示例 1:

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

示例 2:

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

提示:

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

二、解题思路

通过示例分析可以发现, 通过遍历每个单词的相同索引下标并且对相应的字母进行对比,只要发现有一个字母不同便结束循环,返回结果。如果所有字母均相同则返回strs[0]。同时如果字符串数组为空则返回空字符。

 三、解题步骤

1. 第一种特殊情况 如果字符串数组为空则返回空字符;

2. 即每次实现单词从左到右逐一遍历,比较相同索引下标的字母是否相同;

3. 直到索引相同下标的字母不同的时候,结束循环,返回结果;

4. 如果所有字母均与第一个单词字母相同,则返回第一个单词strs[0];

四、代码实现(C++版详细注释)

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {// 第一种特殊情况 如果字符串数组为空则返回空字符if (!strs.size()) {return "";}// 正常情况的字符数组情况。首先声明字符第一单词的长度,字符数组长度int length = strs[0].size();int count = strs.size();// 第一for循环// 实现控制单词字母的索引下标,即每次实现单词从左到右逐一遍历for (int i = 0; i < length; ++i) {// 记录每一次需要比较的字母char c = strs[0][i];// 第二个for循环实现除第一个单词以外的所有单词字母对比,其中通过count实现每个单词遍历for (int j = 1; j < count; ++j) {// 通过if判断语句实现// 比较相同索引下标的字母是否相同,如果相同则继续第二个for循环,如果不相同则结束循环,返回遍历结果if (i == strs[j].size() || strs[j][i] != c) {// 因为索引相同下标的字母遇到不同,结束循环,返回结果return strs[0].substr(0, i);}}}// 第三种情况,如果所有字母均与第一个单词字母相同,则返回第一个单词strs[0];return strs[0];}
};

五、总结

时间复杂度分析O(n^{2}),即两个for循环。

空间复杂度分析O(1)

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

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

相关文章

微软研究深度报告:Sora文转视频AI模型全景剖析及未来展望

论文由微软研究团队撰写&#xff0c;这篇论文深入探讨了Sora的发展背景、核心技术、新兴应用场景、现有的局限性以及未来的发展机会&#xff0c;基于公开资料和团队自行进行的逆向工程分析。文中详尽且逻辑清晰&#xff0c;建议细读全文以获得深入了解。 原文&#xff1a;Sora…

第四节 JDBC简单示例代码

本文章教程中将演示如何创建一个简单的JDBC应用程序的示例。 这将显示如何打开数据库连接&#xff0c;执行SQL查询并显示结果。 这个示例代码中涉及所有步骤&#xff0c;一些步骤将在本教程的后续章节中进行说明。 创建JDBC应用程序 构建JDBC应用程序涉及以下六个步骤 - 导…

Java并发编程-进程和线程

一、进程和线程 1. 进程 什么是进程&#xff1f; 简单来说&#xff0c;进程就是程序的一次启动和执行。进程是操作系统中的一个概念&#xff0c;它代表正在运行的程序的实例。每个进程都有自己的内存空间、代码和数据&#xff0c;以及其他操作系统资源&#xff0c;如文件和设备…

Git分布式管理-头歌实验远程版本库

Git的一大特点就是&#xff0c;能为不同系统下的开发者提供了一个协作开发的平台。而团队如果要基于Git进行协同开发&#xff0c;就必须依赖远程版本库。远程版本库允许&#xff0c;我们将本地版本库保存在远端服务器&#xff0c;而且&#xff0c;不同的开发者也是基于远程版本…

力扣hot100:560.和为K的子数组(前缀和+哈希表)

分析&#xff1a; 这个题目乍一看&#xff0c;数据大小用暴力解法大概率会超时&#xff0c;可能想用双指针&#xff0c;但是问题出现在 可能存在负数&#xff0c;也就是说即使是找到了一个答案&#xff0c;后面也可能存在负数和正数抵消&#xff0c;又是答案&#xff0c;因此不…

SpringBoot集成Logback

logback logback-core&#xff1a;其它两个模块的基础模块。logback-classic&#xff1a;它是log4j的一个改良版本&#xff0c;同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access&#xff1a;访问模块与Servlet容器集成提供…

08-prometheus监控的告警通知-alertmanager组件工具

一、概述 prometheus通过规则文件对比抓取到的数据&#xff0c;来判断是否触发告警&#xff0c;我们通过配置告警的工具altermanager进行告警通知&#xff1b; 规则文件&#xff0c;写的就是&#xff0c;当我们获取到的PromeQL的值到达一个设置的规则后&#xff0c;触发告警&am…

刷题笔记day27-回溯算法3

39. 组合总和 var path []int var tmp []int var result [][]int// 还是需要去重复&#xff0c;题目中要求的是至少一个数字备选的数量不同。 // 所以需要剪枝操作&#xff0c;右边的要比左边的> func combinationSum(candidates []int, target int) [][]int {// 组合问题pa…

白皮书发布|超融合运行 K8s 的场景、功能与优势

目前&#xff0c;不少企业都使用虚拟化/超融合运行 Kubernetes 和容器化应用。一些用户可能会有疑惑&#xff1a;既然 Kubernetes 可以部署在裸金属上&#xff0c;使用虚拟化不是“多此一举”吗&#xff1f; 在电子书《IT 基础架构团队的 Kubernetes 管理&#xff1a;从入门到…

详细分析Vue中的$refs用法

目录 1. 基本知识2. Demo 1. 基本知识 在Vue.js中&#xff0c;$refs是一个特殊的属性&#xff0c;用于在组件内部直接访问子组件或者DOM元素 作用&#xff1a; 访问DOM元素&#xff1a; 直接访问模板中的DOM元素&#xff0c;以便执行DOM操作&#xff0c;如聚焦、改变样式等 访…

[极客大挑战 2020]Roamphp1-Welcome ---不会编程的崽

buuctf上的题难度适中。越到后边会越难&#xff0c;但也有例外 页面报错了。报错的原因可能有很多种猜想。所以有没有一种可能是故意这么设计的。先抓包吧 发现是GET请求。修改请求方法再试试呢&#xff1f; <?php error_reporting(0); if ($_SERVER[REQUEST_METHOD] ! P…

Android Studio开发(一) 构建项目

1、项目创建测试 1.1 前言 Android Studio 是由 Google 推出的官方集成开发环境&#xff08;IDE&#xff09;&#xff0c;专门用于开发 Android 应用程序。 基于 IntelliJ IDEA: Android Studio 是基于 JetBrains 的 IntelliJ IDEA 开发的&#xff0c;提供了丰富的功能和插件…

Python 全栈系列232 再次搭建RabbitMQ

说明 最近想重新上RabbitMQ&#xff0c;主要目的还是为了分布式任务调度。在Kafka和RabbitMQ两者犹豫了一下&#xff0c;还是觉得RabbitMQ好一些。 在20年的时候有搞过一阵子的RabbitMQ,看了下当时的几篇文章&#xff0c;觉得其实想法一直没变过。 Python - 装机系列24 消息…

常用“树”数据结构

哈夫曼树 在许多应用中&#xff0c;树中结点常常被赋予一个表示某种意义的数值&#xff0c;称为该结点的权。从树的根到任意结点的路径长度(经过的边数)与该结点上权值的乘积&#xff0c;称为该结点的带权路径长度。树中所有叶结点的带权路径长度之和称为该树的带权路径长度&am…

出现身份验证错误,无法连接到本地安全机构 顺利解决这个问题希望能帮助大家

出现身份验证错误&#xff0c;无法连接到本地安全机构&#xff0c;远程计算机&#xff1a;XX&#xff0c;这可能是由于密码过期&#xff0c;如果密码已过期请更新密码。 我们可以在系统属性中对远程进行设置&#xff0c;以解决远程桌面无法连接到本地安全机构这一问题。 步骤…

倒计时34天

L2-1 堆宝塔 - B107 2023级选拔春季开学测重现 (pintia.cn) #include<bits/stdc.h> using namespace std; //#define int long long const int N2e56; const int inf0x3f3f3f3f; const double piacos(-1.0); vector<int>ve1,ve2; vector<vector<int> >…

企业出海WAS安全自动化解决方案

随着企业出海的日益激烈&#xff0c;安全风险正在成为企业日益关注的问题之一&#xff0c;九河云携手AWS带来了使用Amazon WAF 与 Amazon Shield 的 CloudFront安全自动化。Aws WAF是一种web应用防火墙&#xff0c;可帮助保护客户的web应用程序或api免遭常规web漏洞的攻击。Aws…

【Hadoop大数据技术】——Hadoop概述与搭建环境(学习笔记)

&#x1f4d6; 前言&#xff1a;随着大数据时代的到来&#xff0c;大数据已经在金融、交通、物流等各个行业领域得到广泛应用。而Hadoop就是一个用于处理海量数据的框架&#xff0c;它既可以为海量数据提供可靠的存储&#xff1b;也可以为海量数据提供高效的处理。 目录 &#…

【数据结构】用栈实现队列

前言&#xff1a;本节博客分享了用栈实现队列效果的思路以及代码&#xff0c;有需要借鉴即可。 1.题目及链接 LINK 2.思路分析 如果要用栈实现队列&#xff0c;我们直到栈是先入后出的一个效果&#xff0c;所以我们可以用两个栈&#xff0c;这样逆转两次数不就是入栈之前数组…

SpringBoot约定大于配置

什么是约定大于配置 "约定大于配置"&#xff08;Convention Over Configuration&#xff09;是一种理念&#xff0c;旨在通过默认约定和规则来减少开发人员需要做的配置工作。在Spring Boot框架中&#xff0c;这一原则得到了充分应用&#xff0c;帮助开发者更快地构…