最长公共前缀(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.hqwc.cn/news/418410.html

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

相关文章

linux-部署Samba文件共享服务

linux-部署Samba文件共享服务 1、使用命令安装samba服务和samba客户端 dnf install samba samba-client # 或者 yum install samba samba-client2、配置文件的设置(可提前备份smb.conf) vim /etc/samba/smb.conf [global]workgroup SAMBAsecurity userpassdb backend tdbsam…

算法总结——单调栈

纵有疾风起&#xff0c;人生不言弃。本文篇幅较长&#xff0c;如有错误请不吝赐教&#xff0c;感谢支持。 文章目录 一、单调栈的定义二、单调栈的应用&#xff1a;寻找左边第一个比它小的数单调栈的思想&#xff08;重点&#xff09;&#xff1a;寻找左边第一个比它小的数的下…

组件通信方式

组件通信 父子组件通信 单向数据流 属性传递props&#xff08;还有插槽&#xff0c;$attrs非属性&#xff09;/$emit&#xff0c;发布订阅模式 方法也可以作为属性 父子组件渲染生命周期&#xff1a; 获取组件实例。$children、ref&$refs/$parent 祖先和后代 组件和后代通信…

css绘制下拉框头部三角(分实心/空心)

1:需求图: 手绘下拉框 带三角 2:网上查了一些例子,但都是实心的, 可参考,如图: (原链接: https://blog.csdn.net/qq_33463449/article/details/113375804) 3:简洁版的: a: 实心: <view class"angle"/>.angle{width:0;height:0;border-left: 10px solid t…

HTTP 协议和 TCP/IP 协议之间有什么区别?

HTTP&#xff08;超文本传输协议&#xff09;和TCP/IP&#xff08;传输控制协议/互联网协议&#xff09;是两种在互联网通信中广泛使用的协议&#xff0c;它们之间的区别和联系对许多人来说可能还不是很清晰&#xff0c;今天我们就带大家来一起了解一下HTTP和TCP/IP协议这2者之…

一篇文章说清楚TVS管

大家好,这里是大话硬件。 这篇文章就分享总结TVS相关内容。 1.TVS管介绍 瞬变电压抑制二极管也被称为TVS管,英文名Transient Voltage Suppression,从TVS的中文名可以看出,TVS管对电压的响应速度比较快,而且能够抑制电压的变化,且属于二极管中的一种器件。因此,TVS管会…

Python初识——小小爬虫

一、找到网页端url 打开浏览器&#xff0c;打开百度官方网页点击图片&#xff0c;打开百度图片 鼠标齿轮向下滑&#xff0c;点击宠物图片 进入宠物图片网页&#xff0c;在网页空白处点击鼠标右键&#xff0c;弹出的框中最下方显示“检查”选项&#xff0c;点击&#xff08;我是…

记录一下uniapp 集成腾讯im特别卡(未解决)

uniapp的项目运行在微信小程序 , 安卓 , ios手机三端 , 之前这个项目集成过im,不过版本太老了,0.x的版本, 现在需要添加客服功能,所以就升级了 由于是二开 , 也为了方便 , 沿用之前的webview嵌套腾讯IM的方案 , 选用uniapp集成ui ,升级之后所有安卓用户反馈点击进去特别卡,几…

数据库的内连接和外连接

数据库的内连接和外连接 内连接: 两个或两个以上的表进行关联查询时&#xff0c;查询的结果集中 返回所有满足连接条件的行。 外连接: 两个或两个以上的表进行关联查询时&#xff0c;查询的结果集中 除了返回满足连接条件的行以外&#xff0c;还返回左&#xff08;或右&…

搭建网站website

一.领取一个免费域名和SSL证书&#xff0c;和CDN 特点&#xff1a;支持Cloudflare CDN Cloudflare是全球知名的CDN提供商&#xff0c;如果你不想暴露你的源站&#xff0c;又想使用我们的二级域名&#xff0c;不需要前往Cloudflare添加域名&#xff0c;修改NS记录&#xff0c;…

使用Element中的input组件如何实现文字和输入框在一行显示

利用 <el-form-item label"商品名称&#xff1a;">标签包裹即可&#xff0c;label写提示文字 <el-form ref"form" label-width"100px"><el-form-item label"商品名称&#xff1a;"><el-input v-model"na…

CentOS7 修改主机名

目录 主机名分类静态主机名 (Static hostname)瞬态主机名 (Transient hostname)漂亮主机名 (Pretty hostname)查看主机名 修改主机名使用 hostnamectl 命令临时有效永久生效 编辑配置文件 主机名分类 在CentOS7和其他使用systemd的现代Linux发行版中&#xff0c;有三种不同类型…