theme: smartblue
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第24天,点击查看活动详情。
最长公共前缀
题目如下图所示,也可以在LeetCode题目中找到此题。
题目解析
题目素材解析
根据题目描述,该题目提供了一个如下数组。
- 一维数组,其中包含着多个字符串元素。
注意:数组的长度在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(); } }