leetcode的最长公共前缀(java)

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

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

示例 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;
    }
}在这里插入代码片
发布了2 篇原创文章 · 获赞 0 · 访问量 18

猜你喜欢

转载自blog.csdn.net/zhuruihe2014/article/details/105732411
今日推荐