LeetCode刷题记录(二十四):最长公共前缀


theme: smartblue

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第24天,点击查看活动详情

最长公共前缀

题目如下图所示,也可以在LeetCode题目中找到此题。

image.png

题目解析

题目素材解析

根据题目描述,该题目提供了一个如下数组。

  1. 一维数组,其中包含着多个字符串元素。

注意:数组的长度在1到200之间;并且数组中的元素可能为空,长度不超过200。

我的解读

本道题其实还是挺简单的,考察的点就在于是否能正确的对比字符串中每一个字符。

要正确解答这道题,只需要解决这两个问题。

一,如何获取字符串中指定位置的字符。

二,如何处理中间值的对比和保留。

解题思路

解题思路也是一样的,虽然我的方法不是最好的。

第一步,先声明一个StringBuilder对象,用来存储结果值。

第二步,把数组中的第一个值取出来分隔成字符串数组,因为数组的长度最短也只会为1,所以不用担心报错。

第三步,将转换后的字符串数组进行循环遍历。

第四步,获取每一个字符,并且去原始数组中的元素进行对比,这里使用substring方法获取每一个位置的字符。

第五步,考虑到数组中的元素可能会存在长短不一的情况,所以我们要比对一下结果值和元素的长度才行,这也是这道题要处理的一个特殊情况。

最后可以得到我们要的预期结果。

代码

java class Solution { public String longestCommonPrefix(String[] strs) { StringBuilder result = new StringBuilder(); String[] first = strs[0].split(""); for (int i = 0; i < first.length; i++){ String z = result.toString() + first[i]; for(String s : strs){ if(s.length() <= result.length() || !z.equals(s.substring(0, i+1))){ return result.toString(); } } result.append(first[i]); } return result.toString(); } }

执行结果

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ijiran

一杯咖啡太贵,一块糖就可以

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值