您的位置:首页 > 编程语言 > Java开发

leetcode的最长公共前缀(java)

2020-05-08 04:14 1096 查看

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

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

示例 1:

输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:

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

说明:所有输入只包含小写字母 a-z 。

——————————————分割线——————————————

说实话,我想了一个小时,思路倒是挺好,但是就是觉得转化为代码有些难,一直没有思路

看了一个答案答案的思路,照猫画虎地编了下来
思路如下:先把字符串组的第一个存起来作为参考,然后整一个i循环,重复把字符串组里面后面的字符串赋值给si,再里面套一个while循环遍历所有小于ss和si长度的两个字符串的前l位的每一位,直到试到不同为止,l停止增加
以下代码(只能算是部分原创吧,哈哈):

class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs.length==0){
return ""; //一开始这个地方没有考虑到字符组里面没有元素的情况
}
String ss=strs[0];
for(int i=1;i<strs.length;i++)  //先确定要将字符串strs里面的第几(i)个拿出来跟第一个比
{
int l=0;//两个字符串的第l位进行比较
String si=strs[i];//把字符串里的编号为i的提出来
while(l<Math.min(ss.length(),si.length()) && ss.charAt(l)==si.charAt(l)){
//保证l的大小小于俩字符串长度就行了,另外还要第l位相同
l++;//直到比出不同来,l取到了最大值
}ss=ss.substring(0,l);    //这个式子,提取前几位
}return ss;
}
}在这里插入代码片
zhuruihe2014 原创文章 10获赞 0访问量 216 关注 私信
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: