【算法 -- LeetCode】(14) 最长公共前缀

news2024/9/20 22:53:53

在这里插入图片描述

1、题目

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

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

示例 1:

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

示例 2:

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

题目链接:https://leetcode.cn/problems/longest-common-prefix

2、图解

我们要想寻找最长公共前缀,那么首先这个前缀是公共的,我们可以从任意一个元素中找到它。假定我们现在就从一个数组中寻找最长公共前缀,那么首先,我们可以将第一个元素设置为基准元素x0。假如数组为[“flow”,“flower”,“flight”],flow就是我们的基准元素x0。

然后我们只需要依次将基准元素和后面的元素进行比较(假定后面的元素依次为x1,x2,x3…),不断更新基准元素,直到基准元素和所有元素都满足最长公共前缀的条件,就可以得到最长公共前缀。

具体比对过程如下:

  • 如果strings.Index(x1,x) == 0,则直接跳过(因为此时x就是x1的最长公共前缀),对比下一个元素。(如flower和flow进行比较)
  • 如果strings.Index(x1,x) != 0, 则截取掉基准元素x的最后一个元素,再次和x1进行比较,直至满足string.Index(x1,x) == 0,此时截取后的x为x和x1的最长公共前缀。(如flight和flow进行比较,依次截取出flow-flo-fl,直到fl被截取出,此时fl为flight和flow的最长公共前缀)

具体过程如下图所示:
在这里插入图片描述
注意:在处理基准元素的过程中,如果基准元素和任一一个元素无法匹配,则说明不存在最长公共元素。

最后,我们记得处理一下临界条件。如果给定数组是空,也说明没有最长公共元素。

3、Java 示例代码

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if (strs.length == 0 || strs == null) {
            return "";
        }
        String ans = strs[0];
        for (int i = 1; i < strs.length; i++) {
            int j = 0;
            for (; j < ans.length() && j < strs[i].length(); j++) {
                if (ans.charAt(j) != strs[i].charAt(j)) {
                    break;
                }
            }
            ans = ans.substring(0, j);
            //不存在公共前缀
            if (ans.equals("")) {
                return "";
            }
        }
        return ans;
    }
}

执行结果:
在这里插入图片描述

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

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

相关文章

【unity实战】使用shader和shader Graph实现2d图片描边效果(附源码)

文章目录 前言Shader1. 内描边2. 外描边 Shader Graph1. 2d图片描边2. 带炫光的2d图片描边 最终演示效果源码参考完结 前言 最近在学习shader Graph相关内容&#xff0c;其实关于实现2d图片描边效果&#xff0c;网上可以看到很多教程&#xff0c;但是我发现大多数都是基于比较…

2023最新整理的 Elasticsearch 21道面试题

1、为什么要使用 Elasticsearch? 系统中的数据&#xff0c; 随着业务的发展&#xff0c; 时间的推移&#xff0c; 将会非常多&#xff0c;而业务中往往采用模糊查询进行数据的 搜索&#xff0c;而模糊查询会导致查询引擎放弃索引&#xff0c; 导致系统查询数据时都是全表扫描&…

Unity3D 场景添加obj模型

有一个立方体的obj模型&#xff1b;将其拖到Assets文件夹节点上&#xff0c;在此节点放手&#xff0c;资源被加入项目&#xff1b; 在右侧显示出对象概览&#xff1b; 点击箭头&#xff0c;显示此模型下的子对象&#xff1b; 然后按住Assets面板中的cube1对象&#xff0c;拖动…

3分钟阿里云轻量应用服务器和云服务器的区别对比

阿里云服务器ECS和轻量应用服务器有什么区别&#xff1f;云服务器ECS是明星级云服务器&#xff0c;轻量应用服务器可以理解为简化版的云服务器ECS&#xff0c;轻量适用于单机应用&#xff0c;云服务器ECS适用于集群类高可用高容灾应用&#xff0c;阿里云百科来详细说下阿里云轻…

科研论文中SCI,SSCI ,CSSCI是什么

目录 1 SCI 2 SSCI 3 CSSCI 什么是SCI&#xff0c;SSCI &#xff0c;CSSCI 目前&#xff0c;在国际科学界&#xff0c;如何正确评价基础科学研究成果已引起越来越广泛的关注。而被SCI、SSCI收录的科技论文的多寡则被看作衡量一个国家的基础科学研究水平、科技实力和科技论文水平…

以太网之IP协议(七)

目录 一、IP协议的功能 1.1 IP地址 1.2 IP路由 1.2.1 路由原理 1.2.2 路由控制表 1.3 IP分包与组包 二、IP地址 2.1 IP地址分类 2.2 多播地址 2.2.1 广播地址 2.2.2 组播地址 2.3 子网掩码 三、IP帧格式 一、IP协议的功能 数据链路层提供直连两个设备之间的通信功…

【Linux系统编程】Linux编辑器——vim

文章目录 1. 什么是vim2. vim的常用模式3. vim的基本操作4. vim命令集4.1 命令模式命令集复制粘贴依次撤销上一次操作对撤销进行撤销&#xff08;恢复&#xff09;剪切&删除移动光标&#xff08;上下&#xff09;移动光标&#xff08;左右&#xff09;文本内容大小写切换替…

javaTCP数据报套接字编程

TCP套接字编程 1.ServerSocket API1.1ServerSocket 的构造方法1.2ServerSocket 方法&#xff1a; 2.Socket API2.1Socket构造方法2.2Socket方法 3.TCP回显服务器4.TCP中的长短连接5.C10M问题 TCP提供的API主要有两个类&#xff1a;一个是专门给服务器用的SeverSocket对象&#…

MyBatis-Plus框架

说明&#xff1a;Mybaits-Plus是Mybatis框架的升级&#xff0c;该框架提供了一系列API&#xff0c;用于操作数据&#xff0c;可以免受手搓SQL语句的痛苦。 一、使用 第一步&#xff1a;添加依赖 使用前&#xff0c;需先添加对应的依赖&#xff0c;建议使用最新的版本 <d…

有什么事让你觉得在Linux上顺理成章,换到Windows上就令你费解?

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f…

Linux红帽认证适合哪些人学习

近几年来&#xff0c;技术的迭代速度越来越快&#xff0c;云计算&#xff0c;大数据&#xff0c;人工智能&#xff0c;物联网等技术扑面而来&#xff0c;全球各大互联网公司都在抢先发展这些技术&#xff0c;而无一例外的这些技术背后都是使用的Linux系统&#xff0c;双11&…

JAVA_SSM Demo(WEB端)

仓库地址&#xff1a;https://gitee.com/ThMyGitee/SSMDemo.git CSDN的友友们&#xff0c;项目如果适合您的话&#xff0c;麻烦给个小小的Star&#xff0c;谢谢啦&#xff01; JAVA_SSM Demo(WEB端) 1.开发环境 JDK1.8 Tomcat 8.5.60 IDEA 2019.3 MySQL 5.7.20 Maven 3.6 S…

USB协议总结

1、简介 在了解USB协议之前&#xff0c;先了解下该总线协议出现的背景。在USB总线出现之前&#xff0c;计算机与键盘、鼠标、扫描仪、打印机都使用专用的接口连接&#xff0c;不同设备的接口不能互用&#xff0c;扩展性很差。每次插拔设备都要关闭计算机&#xff0c;不支持热插…

【Matlab】智能优化算法_麻雀搜索算法SSA

【Matlab】智能优化算法_麻雀搜索算法SSA 1.背景介绍2.数学模型3.文件结构4.伪代码5.详细代码及注释5.1 Get_Functions_details.m5.2 main.m5.3 SSA.m 6.运行结果7.参考文献 1.背景介绍 麻雀通常是群居的鸟类&#xff0c;有很多种类。它们分布在世界的大部分地区&#xff0c;喜…

TI毫米波雷达软硬件概述

TI毫米波雷达概述 1.TI毫米波雷达传感器芯片及分类&#xff1a;1.1 工业毫米波雷达传感器器件选型应用场景 1.2 汽车毫米波雷达选型使用场景 1.3 基于AWR2243 的 TI 级联雷达 &#xff1a;1.4 不喜欢看文字的也可以戳视频-> 2. TI软件入门概述&#xff1a;2.1 TI RadarToolb…

【C】指针详解(一篇文章带你玩转指针)

指针详解 指针是什么&#xff1f;指针和指针类型指针加减整数指针的解引用 野指针野指针的成因如何规避野指针 指针和数组的关系数组名是什么&#xff1f; 二级指针二级指针是什么&#xff1f;二级指针的运算 字符指针指针数组和数组指针指针数组数组名和&数组名数组指针数…

开源一款轻量线程池项目

基于Arrow的轻量线程池 大家好&#xff0c;我是光城&#xff0c;最近花了几周业余时间&#xff0c;开发出这款轻量线程池&#xff0c;代码也全部开源啦&#xff0c;欢迎大家star。 本线程池的设计与实现会有涉及非常多的知识&#xff0c;这些内容也都会以视频的方式分享在知识星…

分析气象数据:向Python Cartopy地图中添加循环点

大家好&#xff0c;在使用Python和Cartopy对气候数据进行可视化分析的过程中&#xff0c;有一个叫做循环点&#xff08;cyclic point&#xff09;的术语&#xff0c;它在地理空间栅格数据可视化领域中很重要。 1.循环点的定义和作用 有时&#xff0c;当我们试图绘制地理空间数…

性能测试的基本概念和重要指标

这里写自定义目录标题 一、什么是性能测试二、为什么要学习性能三、性能测试与功能测试的区别1、性能测试和功能测试的区别&#xff1f;2、性能测试是在什么时候做?3、我们在做我们的产品的时候&#xff0c;我们只做功能不做性能可不可以&#xff1f;4、性能测试主要是这几个方…

金融计量学第2课堂-金融时间序列线性模型

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 一、相关性和平稳性 1、相关性 &#xff08;1&#xff09;皮尔森相关系数 皮尔森相关系数是最常见、最常用的一个相关系数计算方法。作为衡量两个随机变量x和y线性相关程度的重要指标&#xff0c;在这…