最长公共前缀(Leetcode14)

例题:

分析:

我们可以先定义两个变量 i , j, j表示数组中的每一个字符串, i 表示每个字符串中的第几个字符。一列一列地进行比较,先比较第一列的字符,若都相同,则 i ++ ,继续比较第二列的字符。直至出现不匹配的字符。

这样比较会出现以下3种情况,需要分开处理。

情况1:比较某一列时,遇到不同字符, i 之前的字符就是解。

情况2:比较某一列时,遇到字符串长度不够,i 之前的字符就是解。

情况3:i 循环自然结束,此时第一个字符串就是解。

我们可以都用第一个字符串作为返回的模板。

代码实现:
public class LCPLeetcode14 {/** 情况1:比较某一列时,遇到不同字符,i 之前的字符就是解* 情况2:比较某一列时,遇到字符串长度不够,i 之前的字符就是解* 情况3:i 循环自然结束,此时第一个字符串就是解* */public static String longestCommonPrefix(String[] strs) {char[] first = strs[0].toCharArray();for (int i = 0; i < first.length; i++) {char ch = first[i];for (int j = 1; j < strs.length; j++) { //从二行开始比对,因为第一行字符已被拿到//情况2必须先校验,遍历字符串时,如果长度不够会发生索引越界if(strs[j].length() == i || ch != strs[j].charAt(i)){  //情况1、情况2合并return new String(first, 0, i);}}}return strs[0];}public static void main(String[] args) {System.out.println(longestCommonPrefix(new String[]{"flower", "flow", "flight"})); // flSystem.out.println(longestCommonPrefix(new String[]{"dog","racecar","car"})); //System.out.println(longestCommonPrefix(new String[]{"ab","a"})); // aSystem.out.println(longestCommonPrefix(new String[]{"dog","dogaa","dogbb"})); // dog}
}

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

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

相关文章

MySQL存储过程和触发器

存储过程和触发器是数据库中用于执行特定任务的两种重要的数据库对象。它们由SQL语句组成&#xff0c;被预先编译并存储在数据库中&#xff0c;可以通过调用来执行。以下是对存储过程和触发器的简要说明以及如何创建和使用它们&#xff1a; 存储过程&#xff08;Stored Proced…

成功解决「MySQL问题1」启动mysql时:发生系统错误5拒绝访问

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; ✈️公众号 | 热爱技术的小郑 。文章底部有个人公众号二维码。回复 Java全套视频教程 或 前端全套视频教程 即可获取 300G 教程资…

【数据结构】 顺序表的基本操作 (C语言版)

一、顺序表 1、顺序表的定义&#xff1a; 线性表的顺序存储结构&#xff0c;即将表中的结点按逻辑顺序依次存放在一组地址连续的存储单元里。这种存储方式使得在逻辑结构上相邻的数据元素在物理存储上也是相邻的&#xff0c;可以通过数据元素的物理存储位置来反映其逻辑关系。…

漫漫数学之旅009

文章目录 经典格言数学习题古今评注拓展学习&#xff08;一&#xff09;大数定理&#xff08;二&#xff09;伯努利级数 经典格言 真正的问题&#xff0c;不在于机器是否思考&#xff0c;而在于人们是否思考。——BF斯金纳&#xff08;B. F. Skinner&#xff09; BF斯金纳&…

ubuntu双屏扩展

nvidia 驱动安装 安装依赖 sudo apt-get update #更新软件列表 sudo apt-get install g gcc make build-essential libc6-dev禁用nouveau sudo vim /etc/modprobe.d/blacklist.conf #在最后添加如下两行&#xff1a;blacklist nouveauoptions nouveau modeset0 #然后更新…

MVC和MVVM区别和VUE关系

MVC&#xff08;Model-View-Controller&#xff09;和 MVVM&#xff08;Model-View-ViewModel&#xff09;是两种常见的前端架构模式&#xff0c;它们的主要区别在于处理业务逻辑和数据操作的方式。 MVC中&#xff0c;View&#xff08;视图&#xff09;可以直接访问Model&…

低代码+物联网: 重塑智慧社区,开启未来生活新纪元

在数字化时代的推动下&#xff0c;人们对于智能化生活的需求不断增长。而作为连接物理世界和数字世界的重要桥梁&#xff0c;物联网技术发挥着至关重要的作用。最近几年&#xff0c;低代码开发平台的兴起更是给物联网应用开发带来了革命性的改变。本文将探讨低代码和物联网的结…

2024首更---Web Service 教程

Web Services 简介 Web Services 可使您的应用程序成为 Web 应用程序。 Web Services 通过 Web 进行发布、查找和使用。 您应当具备的基础知识 在继续学习之前&#xff0c;您需要对下面的知识有基本的了解&#xff1a; HTMLXML 如果您希望首先学习这些项目&#xff0c;请在…

2024年华数杯国际赛A题:放射性废水处理建模 思路模型代码解析

2024年华数杯国际赛A题&#xff1a;放射性废水处理建模&#xff08;Radioactive Wastewater from Japan&#xff09; 一、问题描述 2011年3月&#xff0c;日本东海岸发生了地震&#xff0c;引发了福岛第一核电站事故&#xff0c;导致三个核反应堆熔毁&#xff0c;并在一场巨大…

MySQL部署

1、卸载mariadb rpm -qi mariadb-libs yum remove mysql-libs -y 2、查看操作系统内核版本及硬件架构 uname -a 3、查看glibc版本 ldd --version 4、下载mysql压缩包 wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.35-linux-glibc2.17-x86_64.tar 5、解压到/mnt目录…

[java基础揉碎]基本数据类型转换

介绍 当java程序在进行赋值或者运算时&#xff0c;精度小的类型自动转换为精度大的数据类型&#xff0c; 这个就是自动类型转换。 数据类型按精度&#xff08;容量&#xff09;大小排序为: 自动类型转换注意和细节 1.有多种类型的数据混合运算时&#xff0c;系统首先自动…

如何在浏览器上设置 VPN 网络虚拟专用网络

如何在DT浏览器上设置 VPN 网络 虚拟专用网络&#xff08;VPN&#xff09;是一种用公用网络架设专用网络的技术。如何在DT浏览器上设置 VPN 呢&#xff0c;先下载DT浏览器&#xff0c;建议在官方网站下载最新版&#xff0c;安装&#xff0c;在DT浏览器首页点更多&#xff0c;网…

Stable Diffusion中的Embeddings

什么是Embeddings&#xff1f; Embeddings是一种数学技术&#xff0c;它允许我们将复杂的数据&#xff08;如文本或图像&#xff09;转换为数值向量。这些向量是高维空间中的点&#xff0c;可以捕捉数据的关键特征和属性。在文本处理中&#xff0c;例如&#xff0c;embeddings可…

php基础学习之变量

php使用变量的必要性 PHP 是一种动态网站开发的脚本语言&#xff0c;动态语言特点是交互性&#xff0c;会有数据的传递&#xff0c;而 PHP作为“中间人”&#xff0c;需要进行数据的传递&#xff0c;传递的前提就是 PHP 能自己存储数据(临时存储) php变量的使用 定义&#xf…

linux系统nginx工具的访问控制

访问控制 nginx访问控制模块基于ip访问控制配置语法 基于用户的信任登录配置文件更改建立登录用户 nginx访问控制模块 基于IP的访问控制&#xff1a;http_access_module 基于用户的信任登录&#xff1a;http_auth_basic_module 两个同时只能开启一个 基于ip访问控制 配置语法 …

HTML以及CSS相关知识总结(一)

近日就开始回顾html和css相关知识啦&#xff0c;并且会学习html5和css3的新知识&#xff0c;以下是我对记忆不太深刻的地方以及新知识点的总结&#xff1a; Web标准&#xff1a; 结构&#xff1a;用于对网页元素进行整理和分类&#xff0c;即HTML 表现&#xff1a;用于设置网页…

使用 Node 创建 Web 服务器

Node.js 提供了 http 模块&#xff0c;http 模块主要用于搭建 HTTP 服务端和客户端&#xff0c;使用 HTTP 服务器或客户端功能必须调用 http 模块&#xff0c;代码如下&#xff1a; var http require(http); 以下是演示一个最基本的 HTTP 服务器架构(使用 8080 端口)&#x…

「最大化最小值」或者「最小化最大值」采样二分

分割数组的最大值 给定一个非负整数数组 nums 和一个整数 k &#xff0c;你需要将这个数组分成 k 个非空的连续子数组。 设计一个算法使得这 k 个子数组各自和的最大值最小 思路&#xff1a;段数分的越多&#xff0c;最大值就越小&#xff0c;从不分段开始找&#xff0c;l为M…

LeetCode 第381场周赛个人题解

目录 100191. 输入单词需要的最少按键次数 I 原题链接 题目描述 思路分析 AC代码 100188. 按距离统计房屋对数目 I 原题链接 题目描述 思路分析 AC代码 100192. 输入单词需要的最少按键次数 II 原题链接 题目描述 思路分析 AC代码 100213. 按距离统计房屋对数目…

Python实现稳健线性回归模型(rlm算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 稳健回归可以用在任何使用最小二乘回归的情况下。在拟合最小二乘回归时&#xff0c;我们可能会发现一些…